WinForm讀取Excel檔案
這兩天做東西,用到了Excel。需要將Excel中的資料讀取到記憶體中,經過處理後,儲存到資料庫中。在網上找了好多方法,但都有錯誤。現總結下:
1.引用Microsoft.Office.Interop.Excel
2.程式碼:
- /// <summary>
- /// 匯入Excel檔案,並顯示在列表
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnImport_Click(object sender, EventArgs e)
- {
- string worksheetname = string.Empty;
- importtpye = cmbTicketType.Text;
- supplier = cmbSupplier.SelectedValue.ToString();
- #region 匯入本地Excel檔案
- //匯入本地檔案
- OpenFileDialog file = new OpenFileDialog();
- file.Filter = "文件(*.xls)|*.xls";
- if (file.ShowDialog() == DialogResult.OK)
- btnImport.Tag = file.FileName;
- //判斷有沒有檔案匯入
- if (file.FileName.Length == 0)
- {
- MessageBox.Show("請選擇要匯入的檔案", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- return;
- }
- #endregion
- #region 獲取Excel的工作表名稱
- //建立Excel例項,獲取worksheet Name
- Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application();
- object objMissing = System.Reflection.Missing.Value;
- Microsoft.Office.Interop.Excel.Workbook myBook = (Microsoft.Office.Interop.Excel.Workbook)oExcel.Workbooks.Open(file.FileName, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing);
- Microsoft.Office.Interop.Excel.Sheets sheets = myBook.Worksheets;
- Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1);
- worksheetname = worksheet.Name;//獲取worksheet Name
- oExcel.Quit();
- #endregion
- dataTable.Rows.Clear();
- //將Excel表中的資料匯入到Datatable中
- DataTable table = LoadExcelToDataTable(file.FileName, worksheetname);
- }
3.程式碼:
- /// <summary>
- /// 載入Excel表到DataTable,跟原始Excel表形式一樣,需要篩選自己有用的資料
- /// </summary>
- /// <param name="filename">需要讀取的Excel檔案路徑</param>
- /// <param name="sheetname">工作表名稱</param>
- /// <returns>DataTable</returns>
- public static DataTable LoadExcelToDataTable(string filename, string worksheetname)
- {
- DataTable table;
- //連線字串
- String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=/"Excel 8.0;HDR=Yes;IMEX=1/"";
- OleDbConnection myConn = new OleDbConnection(sConnectionString);
- string strCom = " SELECT * FROM [" + worksheetname + "$]";
- myConn.Open();
- OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
- table = new DataTable();
- myCommand.Fill(table);
- myConn.Close();
- return table;
- }
4.注意:有的人的連線字串寫成這樣:
- //連線字串
- String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" +
- filename + ";" + "Extended Properties=Excel 8.0;";
這樣也可以讀取到資料,但是,如果Excel表裡的某一列中既有文字型別的值,又有數字型別的值,即混合型別的列,那麼就會只讀取到一種型別的值,另一種型別的就會為NULL。
- //連線字串
- String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=/"Excel 8.0;HDR=Yes;IMEX=1/"";
這樣,後邊加上"HDR=Yse;IMEX=1",並且這句必須用引號引住,這樣就會把混合型別的資料同一當作文字讀取,不會出現丟資料的現象。
本文出自 “小狼” 部落格,請務必保留此出處http://canyan3073.blog.51cto.com/1576306/383374
相關文章
- 前端讀取excel檔案前端Excel
- 讀取本地Excel檔案生成echartsExcelEcharts
- nodejs 讀取excel檔案,並去重NodeJSExcel
- 使用openpyxl庫讀取Excel檔案資料Excel
- Maatwebsite\Excel 讀取帶公式的excel檔案得到值呢?WebExcel公式
- Pandas之EXCEL資料讀取/儲存/檔案分割/檔案合併Excel
- js如何讀取excel檔案,繪製echarts圖形。JSExcelEcharts
- python讀寫excel檔案PythonExcel
- Python讀取大量Excel檔案並跨檔案批次計算平均值PythonExcel
- python讀取兩個excel資料檔案輸出整理好以後的excel資料檔案PythonExcel
- EasyExcel庫來讀取指定Excel檔案中的資料Excel
- 基礎補充:使用xlrd模組讀取excel檔案Excel
- 【python】python初學 讀取map檔案資料到excel中PythonExcel
- Winform小工具:.txt檔轉excel檔ORMExcel
- php讀取excel檔案資料的匯入和匯出PHPExcel
- 基於.NET的程式讀取Excel檔案的解決方案Excel
- EXCEL不可讀怎麼辦,修復EXCEL檔案不可讀Excel
- 任意檔案讀取
- Java 讀取檔案Java
- js讀取excel檔案,繪製echarts圖形---資料處理JSExcelEcharts
- Python 高階技巧:深入解析讀取 Excel 檔案的多種方法PythonExcel
- Laravel Excel 如何獲取 Excel 檔案的公式結果LaravelExcel公式
- go配置檔案讀取Go
- python讀取大檔案Python
- springboot讀取配置檔案Spring Boot
- 用友任意檔案讀取
- viper 讀取配置檔案
- matlab讀取npy檔案Matlab
- python小白檔案讀取Python
- cocos讀取plist檔案
- python 讀取文字檔案Python
- IOC - 讀取配置檔案
- Laravel讀取ExcelLaravelExcel
- Python讀寫EXCEL檔案常用方法大全PythonExcel
- 讀取檔案流並寫入檔案流
- Springboot整合MongoDB儲存檔案、讀取檔案Spring BootMongoDB
- java中讀取配置檔案Java
- go–讀取檔案的方式Go
- C#讀取Xml檔案C#XML