C#讀寫Excel的流程步驟
環(huán)境準(zhǔn)備
首先,右鍵解決方案的依賴項->添加項目引用,搜索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)對Excel的讀寫
Excel寫入
為了重點(diǎn)突出重點(diǎn),下面爭取用最短的代碼,寫一個將多維數(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];
// 獲取當(dāng)前工作路徑
string path = System.Environment.CurrentDirectory;
// 輸出文件的路徑
path = Path.Combine(path, "test.xlsx");
dataToExcel(data, path);
Console.WriteLine($"輸出到{path}");
這里需要建立起對Excel中數(shù)據(jù)組織的一個概念,首先是Excel軟件,一個軟件可以打開多個xlsx文件,每個文件中對應(yīng)多個sheet,每個sheet中有多個單元格,對應(yīng)關(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ū)域,其對應(yīng)的行數(shù)和列數(shù)就比較有代表性,根據(jù)這兩個值進(jìn)行循環(huán),就可以把剛剛寫入的數(shù)據(jù)打印出來了。
以上就是C#讀寫Excel的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于C#讀寫Excel的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺談C#中HttpWebRequest與HttpWebResponse的使用方法
本篇文章主要介紹了淺談C#中HttpWebRequest與HttpWebResponse的使用方法,具有一定的參考價值,有興趣的可以了解一下。2017-01-01
C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能
這篇文章主要為大家詳細(xì)介紹了C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
C#連續(xù)任務(wù)Task.ContinueWith方法
這篇文章介紹了C#中的連續(xù)任務(wù)Task.ContinueWith方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
C#將配置文件appsetting中的值轉(zhuǎn)換為動態(tài)對象調(diào)用
這篇文章主要介紹了將配置文件appsetting中的值轉(zhuǎn)換為動態(tài)對象調(diào)用 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09
c#中SAPI使用總結(jié)——SpVoice的使用方法
最近使用C#重做了點(diǎn)名系統(tǒng)(要用到TTS,讓計算機(jī)點(diǎn)名)使用了SAPI,在這里總結(jié)一下SpVoice的使用方法。2011-10-10

