国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

.net excel 導入 導出

2019-11-17 02:02:12
字體:
來源:轉載
供稿:網友

.net Excel 導入 導出

哎,好好的代碼今天說來個實驗,結果用的是office15 氣死人了,網上最高office14.dll 文章轉自2012年 QQ群:13615607 MR.Young
 1  PRotected void BtnLoad_Click(object sender, EventArgs e) 2         { 3             //dataDR datadr = new dataDR(); 4             //datadr.delete("delete from dbo.yuepingjueyuerbiao"); 5             string fileName = DateTime.Now.ToString("yyMMddhhmmss") + ".xls"; 6             string path = Server.MapPath("~/upload/excel/") + fileName; 7  8             FileUpload1.SaveAs(path); 9             if (path != null)10             {11                DataSet ds=loadSouce(path);12             }13             else14             {15                 Response.Write("<scrView Code
1  <div>2 3             <asp:FileUpload ID="FileUpload1" runat="server" /><asp:Button ID="BtnLoad" runat="server" Text="上傳" OnClick="BtnLoad_Click" />4 5         </div>6 7         <asp:Button ID="Button1" runat="server" Text="下載" style="height: 21px" OnClick="Button1_Click" />
View Code經過第二天想了以后,其實連接字符串什么都沒有問題,最后得出來的結論是因為導出并非標準格式的excel,不行的粘貼一下即可

導入方法

 1  private DataSet loadSouce(string path) 2         { 3  4  5             //連接EXCEL數據源 6             //string strPath = this.getPath(); 7             //string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=" + "/"" + "Excel 8.0;HDR=Yes;IMEX=1" + "/""; 8  9             // string strConn = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source =" + path + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";10             string strConn = "Provider = Microsoft.ACE.OLEDB.15.0;Data Source =" + path + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";11             //此連接可以操作.xls與.xlsx文件 (支持Excel2003 和 Excel2007 的連接字符串)12             //備注: "HDR=yes;"是說Excel文件的第一行是列名而不是數據,"HDR=No;"正好與前面的相反。13             //      "IMEX=1 "如果列中的數據類型不一致,使用"IMEX=1"可必免數據類型沖突。 14 15             OleDbConnection conn = new OleDbConnection(strConn);16 17             conn.Open();18 19             /*20              如果用戶把sheet表名改了就是報下面的錯:21             'sheet1$' 不是一個有效名稱。請確認它不包含無效的字符或標點,且名稱不太長。 22             如果可以動態獲得Excel中各個sheet的名稱能動態的選中返回哪個sheet的數據,23             即使用戶更改了名稱也不怕,完全可以把所有sheet的名稱列出來供用戶選擇: 24             下面就把解決問題的代碼列出來,主要用到了OleDbConnection.GetOleDbSchemaTable()方法25              */26 27             //返回Excel的架構,包括各個sheet表的名稱,類型,創建時間和修改時間等28             System.Data.DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });29 30             //包含excel中表名的字符串數組31             string[] strTableNames = new string[dtSheetName.Rows.Count];32             for (int k = 0; k < dtSheetName.Rows.Count; k++)33             {34                 strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();35             }36 37             //OleDbDataAdapter myCommand = null;38             System.Data.DataTable dt = new System.Data.DataTable();39 40             //從指定的表明查詢數據,可先把所有表明列出來供用戶選擇41             string strExcel = "select * from [" + strTableNames[0] + "]";42 43 44 45             OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, strConn);46 47             DataSet myDataSet = new DataSet();48 49 50             myCommand.Fill(myDataSet);51 52             return myDataSet;53         }
View Code

導出方法

 1  private void CreateExcel(System.Data.DataTable dt, string fileName) 2         { 3             HttpResponse resp; 4             resp = Page.Response; 5  6             resp.Buffer = true; 7             resp.ClearContent(); 8             resp.ClearHeaders(); 9             resp.Charset = "GB2312";10 11 12             //  resp.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");13             resp.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);14             resp.ContentEncoding = System.Text.Encoding.Default;//設置輸出流為簡體中文   15             resp.ContentType = "application/ms-excel";//設置輸出文件類型為excel文件。 16 17 18 19             string colHeaders = "", ls_item = "";20 21             ////定義表對象與行對象,同時用DataSet對其值進行初始化22             //DataTable dt = ds.Tables[0];23             DataRow[] myRow = dt.Select();//可以類似dt.Select("id>10")之形式達到數據篩選目的24 25             int i = 0;26             int cl = dt.Columns.Count;27 28 29             // colHeaders += "tttttttt" + "/n";30             //取得數據表各列標題,各標題之間以t分割,最后一個列標題后加回車符31             for (i = 0; i < cl; i++)32             {33                 if (i == (cl - 1))//最后一列,加n34                 {35                     colHeaders += dt.Columns[i].Caption.ToString().Trim() + "/n";36                 }37                 else38                 {39                     colHeaders += dt.Columns[i].Caption.ToString().Trim() + "/t";40                 }41 42             }43             resp.Write(colHeaders);44 45             //向HTTP輸出流中寫入取得的數據信息46 47 48 49             //逐行處理數據 50             foreach (DataRow row in myRow)51             {52                 //當前行數據寫入HTTP輸出流,并且置空ls_item以便下行數據   53                 for (i = 0; i < cl; i++)54                 {55                     if (i == (cl - 1))//最后一列,加n56                     {57                         ls_item += row[i].ToString().Trim() + "/n";58                     }59                     else60                     {61                         ls_item += row[i].ToString().Trim() + "/t";62                     }63 64                 }65                 resp.Write(ls_item);66                 ls_item = "";67 68             }69             resp.End();70 71         }
View Code

記得引用Micorosoft.office.Interop.Excel


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沂水县| 扶沟县| 江华| 本溪市| 台湾省| 乐亭县| 沙坪坝区| 聊城市| 西平县| 盖州市| 资阳市| 舞阳县| 丽水市| 大埔县| 磐安县| 策勒县| 海门市| 犍为县| 平南县| 峨边| 沛县| 芮城县| 阜南县| 阿坝县| 安义县| 荥阳市| 浦东新区| 光泽县| 满城县| 常州市| 镇雄县| 霍山县| 望谟县| 大洼县| 兴城市| 闸北区| 长子县| 灵石县| 灵石县| 巧家县| 河源市|