版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C# 讀取 EXCEL文件的幾種經(jīng)典方法例子引入(讀取時excel 要打開)namespace讀取 excel測試publicpartialclassForm1 :FormpublicForm1()InitializeComponent();/ 讀取privatevoid simpleButton1_Click(objectsender,EventArgse)bindingSource1.DataSource =null ;OpenFileDialogfd =newOpenFileDialog();fd.Filter = 電子表 格|*.xlsx|電子表格|*.xls|所有文件 |*.*;/
2、打開對話框if(fd.ShowDialog()= DialogResult.OK)/ 得到文件路徑名稱this.txtPath.Text = fd.FileName;/將excel的對象放到 bindingSource1中預覽DataTabledt =returndb(this.txtPath.Text).Tables0;bindingSource1.DataSource = dt;gridView1.BestFitColumns();/讀取方法publicDataSetreturndb(stringpath).stringstrConn =Provider=Microsoft.Jet.OLE
3、DB.4.0;+DataSource= + path + ; + Extended Properties=Excel 8.0; ;OleDbConnectionconn =newOleDbConnection(strConn);conn.Open();stringstrExcel = ;OleDbDataAdaptermyCommand =null;DataSetds =null;strExcel =select * from sheet1$;myCommand =newOleDbDataAdapter(strExcel, strConn);ds =newDataSet();myCommand
4、.Fill(ds,table1);returnds;/ 另一種寫法/FileInfo fileInfo = newFileInfo(path);/if (!fileInfo.Exists) return null;/string strConn =Provider=Microsoft.Jet.OLEDB.4.0;Data Source=+ path + ;Extended Properties=Excel8.0;HDR=NO;IMEX=1;/OleDbConnection objConn = new OleDbConnection(strConn);/DataSet dsExcel = new
5、 DataSet(); /try/ objConn.Open();/ DataTable table = objConn.GetOleDbSchemaTable(System.Data.OleDb.O leDbSchemaGuid.Tables, null);/ string tableName =.table.Rows0Table_Name.ToString();/ string strSql = select * from + tableName + ;/ OleDbDataAdapterodbcExcelDataAdapter = new OleDbDataAdapter(strSql,
6、 objConn);/odbcExcelDataAdapter.Fill(dsExcel);/ return dsExcel;/catch (Exception ex)/ throw ex;/1. 方法一:采用 OleDB讀取 EXCEL文件:把 EXCEL文件當做一個數(shù)據(jù)源來進行數(shù)據(jù)的讀取操作,實例如下: public DataSet ExcelToDS(string Path)string strConn = Provider=Microsoft.Jet.OLEDB.4.0; +Data Source=+ Path +;+Extended Properties=Excel 8.0;OleD
7、bConnection conn = new OleDbConnection(strConn); conn.Open();string strExcel = ;OleDbDataAdapter myCommand = null; DataSet ds = null;strExcel=select * from sheet1$;myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet();myCommand.Fill(ds,table1); return ds;對于 EXCEL中的表即 sheet(sheet1$)
8、如果不是固定的可以使用下面的.方法得到string strConn = Provider=Microsoft.Jet.OLEDB.4.0; +Data Source=+ Path +;+Extended Properties=Excel 8.0;OleDbConnection conn = new OleDbConnection(strConn); DataTable schemaTable =objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);string tableName=schemaTab
9、le.Rows02.ToString().Trim();另外:也可進行寫入 EXCEL文件,實例如下:public void DSToExcel(string Path,DataSet oldds)/ 先得到匯總 EXCEL的DataSet 主要目的是獲得 EXCEL在DataSet 中的結構string strCon = Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =+path1+;Extended Properties=Excel 8.0 ;OleDbConnection myConn = new OleDbConnection(str
10、Con) ; string strCom=select * from Sheet1$;myConn.Open ( ) ;OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom,myConn ); ystem.Data.OleDb.OleDbCommandBuilder builder=newOleDbCommandBuilder(myCommand);/QuotePrefix 和QuoteSuffix 主要是對 builder 生成 InsertComment 命令時使用。builder.QuotePrefix=;/獲取 inser
11、t語句中保留字符(起始位置)builder.QuoteSuffix=;/ 獲取 insert語句中保留字符(結束位置)DataSet newds=new DataSet();myCommand.Fill(newds ,Table1) ;for(int i=0;ioldds.Tables0.Rows.Count;i+)/ 在這里不能使用 ImportRow方法將一行導入到 news中,因為ImportRow將保留原來 DataRow的所有設置 (DataRowState 狀態(tài)不變 ) 。在使用 ImportRow后newds內(nèi)有值,但不能更新到 Excel 中因為所有導.入行的 DataRowS
12、tate!=AddedDataRow nrow=aDataSet.TablesTable1.NewRow(); for(int j=0;jnewds.Tables0.Columns.Count;j+)nrowj=oldds.Tables0.Rowsij;newds.TablesTable1.Rows.Add(nrow);myCommand.Update(newds,Table1);myConn.Close();2. 方法二:引用的 com組件: Microsoft.Office.Interop.Excel.dll 讀取 EXCEL文件首先是 Excel.dll 的獲取 , 將Office 安裝
13、目錄下的 Excel.exe 文件 Copy到DotNet 的bin 目錄下 ,cmd到該目錄下 , 運行TlbImp EXCEL.EXE Excel.dll 得到 Dll 文件。 再在項目中添加引用該 dll 文件 ./ 讀取 EXCEL的方法 ( 用范圍區(qū)域讀取數(shù)據(jù) ) private void OpenExcel(string strFileName)object missing = System.Reflection.Missing.Value; Application excel = new Application();/lauch excelapplicationif (excel
14、 = null)Response.Write(alert(Cant access excel);elseexcel.Visible = false; excel.UserControl = true;/以只讀的形式打開 EXCEL文件Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing,missing, missing, missing, true, missing, missing,.missing, missing, missing);/ 取得
15、第一個工作薄Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);/ 取得總記錄行數(shù) ( 包括標題列 )int rowsint = ws.UsedRange.Cells.Rows.Count; /得到行數(shù)/int columnsint =mySheet.UsedRange.Cells.Columns.Count;/得到列數(shù)/ 取得數(shù)據(jù)范圍區(qū)域 ( 不包括標題列 )Range rng1 = ws.Cells.get_Range(B2, B + rowsint); /itemRange rng2 = ws.Cells.get_Range(K2, K
16、 + rowsint); /Customerobject, arryItem= (object,)rng1.Value2; /get ranges valueobject, arryCus = (object,)rng2.Value2;/ 將新值賦給一個數(shù)組string, arry = new stringrowsint-1, 2;for (int i = 1; i = rowsint-1; i+)/Item_Code列arryi - 1, 0 =arryItemi, 1.ToString();/Customer_Name列arryi - 1, 1 = arryCusi, 1.ToString
17、();Response.Write(arry0, 0 + / + arry0, 1 + # + arryrowsint - 2, 0 + / + arryrowsint - 2, 1);excel.Quit(); excel = null;Process procs = Process.GetProcessesByName(excel); foreach (Process pro in procs)pro.Kill();/沒有更好的方法 , 只有殺掉進程GC.Collect();.3. 方法三:將 EXCEL文件轉化成 CSV(逗號分隔)的文件,用文件流讀取 ( 等價就是讀取一個 txt 文本
18、文件 ) 。先引用命名空間 :using System.Text; 和using System.IO; FileStream fs = new FileStream(d:Customer.csv,FileMode.Open, FileAccess.Read, FileShare.None); StreamReader sr = new StreamReader(fs,System.Text.Encoding.GetEncoding(936);string str = ;string s = Console.ReadLine();while (str != null) str = sr.Read
19、Line();string xu = new String2;xu = str.Split(,);string ser = xu0;string dse = xu1;if (ser = s)Console.WriteLine(dse);break;sr.Close();另外也可以將數(shù)據(jù)庫數(shù)據(jù)導入到一個txt 文件,實例如下:/txt文件名string fn = DateTime.Now.ToString(yyyyMMddHHmmss) + - + PO014 + .txt;OleDbConnection con = new OleDbConnection(conStr); con.Open()
20、;string sql = select ITEM,REQD_DATE,QTY,PUR_FLG,PO_NUM fromTSD_PO014;/OleDbCommand mycom = new OleDbCommand(select * fromTSD_PO014, mycon);/OleDbDataReader myreader = mycom.ExecuteReader(); /也可以用Reader讀取數(shù)據(jù).DataSet ds = new DataSet();OleDbDataAdapter oda = new OleDbDataAdapter(sql, con); oda.Fill(ds, PO014);DataTable dt = ds.Tables0;FileStreamfs = new FileStream(Server.MapPath(download/+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【大學課件】中學生心理檔案的建立與應用
- EHS模床作業(yè)培訓(樣本)
- 二零二五年度民辦學校教師國際視野拓展合同3篇
- 招生費用與獎學金申請
- 招生展示與學校開放日
- 二零二五年度高速電梯安裝與改造工程勞務分包合同2篇
- 學費與獎學金政策分析
- 2025年水路貨物運輸規(guī)則運輸信息化建設合同3篇
- 二零二五版商業(yè)保理擔保合同2篇
- 加油站的行業(yè)展望和未來發(fā)展
- 2025年度土地經(jīng)營權流轉合同補充條款范本
- 南通市2025屆高三第一次調研測試(一模)地理試卷(含答案 )
- 2025年上海市閔行區(qū)中考數(shù)學一模試卷
- 2025中國人民保險集團校園招聘高頻重點提升(共500題)附帶答案詳解
- 0的認識和加、減法(說課稿)-2024-2025學年一年級上冊數(shù)學人教版(2024)001
- 重癥患者家屬溝通管理制度
- 醫(yī)院安全生產(chǎn)治本攻堅三年行動實施方案
- 法規(guī)解讀丨2024新版《突發(fā)事件應對法》及其應用案例
- 工程項目合作備忘錄范本
- 信息安全意識培訓課件
- Python試題庫(附參考答案)
評論
0/150
提交評論