C#如何匯入匯出與處理Excel文件
OleDB是微軟的策略性的通往不同的資料來源的低階應用程式介面。支援很多種資料庫,此客戶端中DBF檔案的輸入輸出也是使用了此資料庫API。使用OleDB記得加入上命名空間:
using System.Data.OleDb;
xlsx檔案的輸入:
private void inputXlsx() { string strConn2; string filePath = inPath; FileInfo fileInfo = new FileInfo(filePath); string directory = fileInfo.DirectoryName; strConn2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;';"; string strConnection = string.Format(strConn2, inPath); OleDbConnection conn = new OleDbConnection(strConnection); try { conn.Open(); String tableName = null; DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); tableName = dt.Rows[0][2].ToString().Trim(); OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + tableName + "]", strConnection); oada.Fill(dtOld); conn.Close(); } catch (Exception ex) { conn.Close(); } }
xlsx檔案的中間處理過程因需求而異,在此不再贅述處理方式。在輸入過程中,將檔案中的資料轉換成了Datatable資料類型的格式,它是一個暫時保存資料的網格虛擬表,處理非常方便。
xlsx檔案的輸出:xlsx檔案的輸出過程並不是很順利,先後使用了三種方式。
第一種方式自然就是OleDB了,有始有終嘛。但真正使用的過程中發現此方式不僅要求程式執行本機必須安裝Excel,而且對Excel版本要求非常高,如果刪除表很容易弄巧成拙,我改註冊表就直接玩壞了Excel。事實上我們並不能保證客戶的機器上一定安裝了對應版本的Excel,所以如果使用OleDB輸出文件,此客戶端的相容性將非常的低劣。
經過一番溝通和掙扎決定還是換一種方式,決定改用第三方組件。由於JAVA方使用的是POI,所以這邊直接使用POI專案的.NET版本,NPOI。網路教學很多,很好實現,但是經過測試之後,此種方式對大檔案的輸入輸出支援的不是很好,處理DEMO檔案沒有問題,但是換成了真正客戶提供的十萬行級甚至百萬行級的文件,客戶端直接在輸出的過程中崩掉。
查詢資料後,網友們對於大文件都建議使用EPPlus。教學也是一抓一大把,我沒有繼續加大文件大小測試,不過客戶給我們提供的十來個文件全部測試通過,基本上都是百萬級以下的。
上代碼吧:
private void outputXlsx() { FileInfo newFile = new FileInfo(dtNew.TableName + ".xlsx"); if (newFile.Exists) { newFile.Delete(); newFile = new FileInfo(dtNew.TableName + ".xlsx"); } using (ExcelPackage package = new ExcelPackage(newFile)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(dtNew.TableName);//创建worksheet for (int m = 0; m < dtNew.Columns.Count; m++) { worksheet.Cells[1, m + 1].Value = dtNew.Columns[m]; } int i = 1; foreach (DataRow dr in dtNew.Rows) { for (int j = 0; j < dtNew.Columns.Count; j++) { worksheet.Cells[i + 1, j + 1].Value = dr[j]; } i++; } package.Save();//保存excel } }

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。
