C#讀寫Excel的流程步驟
環(huán)境準備
首先,右鍵解決方案的依賴項->添加項目引用,搜索Excel,選中Microsoft Excel 16.0 Object Library->點擊確定。
然后在源文件中添加命名空間
using Excel = Microsoft.Office.Interop.Excel; using System.Reflection; using System.Runtime.InteropServices;//導入dll
本教程使用了.Net6.0的頂層語句,所以不需要再導入諸如Core之類的,直接開擼代碼。下面通過C#實現(xiàn)對Excel的讀寫
Excel寫入
為了重點突出重點,下面爭取用最短的代碼,寫一個將多維數(shù)組寫入Excel并保存的函數(shù),其基本流程如下
- 創(chuàng)建一個Excel程序app
- 在app中創(chuàng)建一個xlsx文件 wbk
- 選中wbk中的第一個sheet
- 激活whs
然后就可以具體讀寫Excel文件了。
void dataToExcel(double[,] data, string outName) { Excel.Application app = new Excel.Application(); Excel._Workbook wbk = app.Workbooks.Add(true); Excel._Worksheet whs = wbk.Sheets[1]; //激活whs whs.Activate(); //將二維數(shù)組中的數(shù)據(jù)寫入whs這個sheet for (int i = 0; i < data.GetLength(0); i++) for (int j = 0; j < data.GetLength(1); j++) whs.Cells[i + 1, j + 1] = data[i, j].ToString(); //將wbk另存為outName wbk.SaveAs(outName); //關(guān)閉wbk wbk.Close(); //退出Excel程序 app.Quit(); } double[,] data = new double[5, 5]; // 獲取當前工作路徑 string path = System.Environment.CurrentDirectory; // 輸出文件的路徑 path = Path.Combine(path, "test.xlsx"); dataToExcel(data, path); Console.WriteLine($"輸出到{path}");
這里需要建立起對Excel中數(shù)據(jù)組織的一個概念,首先是Excel軟件,一個軟件可以打開多個xlsx
文件,每個文件中對應多個sheet
,每個sheet
中有多個單元格,對應關(guān)系如下表所示。
Excel | Excel.exe | test.xlsx | sheet1 | A1 |
---|---|---|---|---|
C# | app | wbk | whs | whs.Cells[1,1] |
而通過這樣一個簡單的例程,也就理解了C#
操作Excel的基本流程:打開->操作->關(guān)閉。
其打開流程,包括打開Excel程序、打開Excel文件以及打開sheet;關(guān)閉則包括關(guān)閉Excel文件和Excel程序。
Excel讀取
讀取與寫入的流程相似,但寫入時需要至少有一個Excel文件,剛好剛剛創(chuàng)建了一個
void readExcel(string inName) { var app = new Excel.Application(); var wbk = app.Workbooks.Add(inName); //app.Visible = true; var sh = wbk.Sheets[1]; sh.Activate(); Console.WriteLine("您打開了" + sh.Name); Console.WriteLine($"本sheet共有{sh.Rows.Count}行,{sh.Columns.Count}列"); var usedRange = sh.UsedRange.CurrentRegion; for (int i = 0; i < usedRange.Rows.Count; i++) { for (int j = 0; j < usedRange.Columns.Count; j++) Console.Write($"{sh.Cells[i + 1, j + 1].Text} "); Console.Write("\n"); } wbk.Close(); app.Quit(); } string path = System.Environment.CurrentDirectory; path = Path.Combine(path, "test.xlsx"); readExcel(path);
命令行中輸出結(jié)果為
您打開了Sheet1
本sheet共有1048576行,16384列
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
其中,**app.Visible = true;**時,Excel軟件會被打開。
sh.Rows.Count, sh.Columns.Count分別表示總行數(shù)和總列數(shù),一般就是最大行和最大列。
而sh.UsedRange.CurrentRegion表示已寫入的區(qū)域,其對應的行數(shù)和列數(shù)就比較有代表性,根據(jù)這兩個值進行循環(huán),就可以把剛剛寫入的數(shù)據(jù)打印出來了。
以上就是C#讀寫Excel的流程步驟的詳細內(nèi)容,更多關(guān)于C#讀寫Excel的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺談C#中HttpWebRequest與HttpWebResponse的使用方法
本篇文章主要介紹了淺談C#中HttpWebRequest與HttpWebResponse的使用方法,具有一定的參考價值,有興趣的可以了解一下。2017-01-01C#將配置文件appsetting中的值轉(zhuǎn)換為動態(tài)對象調(diào)用
這篇文章主要介紹了將配置文件appsetting中的值轉(zhuǎn)換為動態(tài)對象調(diào)用 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09c#中SAPI使用總結(jié)——SpVoice的使用方法
最近使用C#重做了點名系統(tǒng)(要用到TTS,讓計算機點名)使用了SAPI,在這里總結(jié)一下SpVoice的使用方法。2011-10-10