日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Winform中使用NPOI实现Excel导入并赋值给DataTable

發布時間:2025/3/19 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winform中使用NPOI实现Excel导入并赋值给DataTable 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

首先打開一個excel文件,然后獲取其路徑,獲取第一行作為DataTable的標題欄。

然后從第二行到最后一行作為顯示的數據。

參考Excel的導出

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100063457

NPOI相關Lib中各種dll文件下載

https://download.csdn.net/download/badao_liumang_qizhi/11608830

示例代碼下載

https://download.csdn.net/download/badao_liumang_qizhi/11612098

實現

在上面進行Excel的導出時,只添加了NPOI的引用,在進行導入時還要添加如下引用。

?

然后添加一個按鈕,用來打開要導入的excel文件。

在其點擊事件中

private void button3_Click(object sender, EventArgs e){OpenFileDialog fileDialog = new OpenFileDialog();fileDialog.Multiselect = true;fileDialog.Title = "請選擇文件";fileDialog.Filter = "所有文件(*xls*)|*.xls*"; //設置要選擇的文件的類型if (fileDialog.ShowDialog() == DialogResult.OK){localFilePath = fileDialog.FileName;//返回文件的完整路徑???????????????}MessageBox.Show("打開成功要導入的文件路徑為:"+localFilePath);}

其中localFilePath 是全局變量用來存儲要導入的文件路徑。

string localFilePath = "";

要導入的文件內容

?

效果

?

然后在下面導入Excel的按鈕的點擊事件中

private void button2_Click(object sender, EventArgs e){ISheet sheet = null;DataTable data = new DataTable();IWorkbook workbook = null;int startRow = 0;try{//獲取文件名,不帶路徑string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);//以文件流的形式打開文件fs = new FileStream(localFilePath, FileMode.Open, FileAccess.Read);// 2007版本if (fileNameExt.IndexOf(".xlsx") > 0)workbook = new XSSFWorkbook(fs);// 2003版本else if (fileNameExt.IndexOf(".xls") > 0)workbook = new HSSFWorkbook(fs);if (fileNameExt != null){sheet = workbook.GetSheet("sheet1");//如果沒有找到指定的sheetName對應的sheet,則嘗試獲取第一個sheetif (sheet == null){sheet = workbook.GetSheetAt(0);}}else{sheet = workbook.GetSheetAt(0);}if (sheet != null){IRow firstRow = sheet.GetRow(0);//第一行最后一個cell的編號 即第一行總的列數int cellCount = firstRow.LastCellNum;for (int i = firstRow.FirstCellNum; i < cellCount; ++i){ICell cell = firstRow.GetCell(i);if (cell != null){string cellValue = cell.StringCellValue;if (!string.IsNullOrEmpty(cellValue)){//設置DataTable的第一行的顯示內容即標題行DataColumn column = new DataColumn(cellValue);data.Columns.Add(column);}}}//excel表格中的第一行作為dataTable的標題//所以從第二行開始startRow = sheet.FirstRowNum+1;//獲取最后一行的標號int rowCount = sheet.LastRowNum;for (int i = startRow; i <= rowCount; ++i){IRow row = sheet.GetRow(i);//沒有數據的行默認是null  if (row == null) continue;      DataRow dataRow = data.NewRow();for (int j = row.FirstCellNum; j < cellCount; ++j){//同理,沒有數據的單元格都默認是nullif (row.GetCell(j) != null)dataRow[j] = row.GetCell(j).ToString();}data.Rows.Add(dataRow);}}}catch (Exception ex){Console.WriteLine("Exception: " + ex.Message);}//設置數據源this.dataGridView1.DataSource = data;}

效果

?

?

總結

以上是生活随笔為你收集整理的Winform中使用NPOI实现Excel导入并赋值给DataTable的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。