C#讀寫Excel的流程步驟
環(huán)境準(zhǔn)備
首先,右鍵解決方案的依賴項(xiàng)->添加項(xiàng)目引用,搜索Excel,選中Microsoft Excel 16.0 Object Library->點(diǎn)擊確定。
然后在源文件中添加命名空間
using Excel = Microsoft.Office.Interop.Excel; using System.Reflection; using System.Runtime.InteropServices;//導(dǎo)入dll
本教程使用了.Net6.0的頂層語句,所以不需要再導(dǎo)入諸如Core之類的,直接開擼代碼。下面通過C#實(shí)現(xiàn)對(duì)Excel的讀寫
Excel寫入
為了重點(diǎn)突出重點(diǎn),下面爭(zhēng)取用最短的代碼,寫一個(gè)將多維數(shù)組寫入Excel并保存的函數(shù),其基本流程如下
- 創(chuàng)建一個(gè)Excel程序app
- 在app中創(chuàng)建一個(gè)xlsx文件 wbk
- 選中wbk中的第一個(gè)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這個(gè)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]; // 獲取當(dāng)前工作路徑 string path = System.Environment.CurrentDirectory; // 輸出文件的路徑 path = Path.Combine(path, "test.xlsx"); dataToExcel(data, path); Console.WriteLine($"輸出到{path}");
這里需要建立起對(duì)Excel中數(shù)據(jù)組織的一個(gè)概念,首先是Excel軟件,一個(gè)軟件可以打開多個(gè)xlsx
文件,每個(gè)文件中對(duì)應(yīng)多個(gè)sheet
,每個(gè)sheet
中有多個(gè)單元格,對(duì)應(yīng)關(guān)系如下表所示。
Excel | Excel.exe | test.xlsx | sheet1 | A1 |
---|---|---|---|---|
C# | app | wbk | whs | whs.Cells[1,1] |
而通過這樣一個(gè)簡(jiǎn)單的例程,也就理解了C#
操作Excel的基本流程:打開->操作->關(guān)閉。
其打開流程,包括打開Excel程序、打開Excel文件以及打開sheet;關(guān)閉則包括關(guān)閉Excel文件和Excel程序。
Excel讀取
讀取與寫入的流程相似,但寫入時(shí)需要至少有一個(gè)Excel文件,剛好剛剛創(chuàng)建了一個(gè)
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;**時(shí),Excel軟件會(huì)被打開。
sh.Rows.Count, sh.Columns.Count分別表示總行數(shù)和總列數(shù),一般就是最大行和最大列。
而sh.UsedRange.CurrentRegion表示已寫入的區(qū)域,其對(duì)應(yīng)的行數(shù)和列數(shù)就比較有代表性,根據(jù)這兩個(gè)值進(jìn)行循環(huán),就可以把剛剛寫入的數(shù)據(jù)打印出來了。
以上就是C#讀寫Excel的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于C#讀寫Excel的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺談C#中HttpWebRequest與HttpWebResponse的使用方法
本篇文章主要介紹了淺談C#中HttpWebRequest與HttpWebResponse的使用方法,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能
這篇文章主要為大家詳細(xì)介紹了C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02使用C#自制一個(gè)Windows安裝包的詳細(xì)過程
這篇文章主要介紹了如何使用C#自制一個(gè)Windows安裝包,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07C#連續(xù)任務(wù)Task.ContinueWith方法
這篇文章介紹了C#中的連續(xù)任務(wù)Task.ContinueWith方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04C#將配置文件appsetting中的值轉(zhuǎn)換為動(dòng)態(tài)對(duì)象調(diào)用
這篇文章主要介紹了將配置文件appsetting中的值轉(zhuǎn)換為動(dòng)態(tài)對(duì)象調(diào)用 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09c#中SAPI使用總結(jié)——SpVoice的使用方法
最近使用C#重做了點(diǎn)名系統(tǒng)(要用到TTS,讓計(jì)算機(jī)點(diǎn)名)使用了SAPI,在這里總結(jié)一下SpVoice的使用方法。2011-10-10