C#读写Excel的流程步骤
作者:微小冷
环境准备
首先,右键解决方案的依赖项->添加项目引用,搜索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#实现对Excel的读写
Excel写入
为了重点突出重点,下面争取用最短的代码,写一个将多维数组写入Excel并保存的函数,其基本流程如下
- 创建一个Excel程序app
- 在app中创建一个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(); //将二维数组中的数据写入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); //关闭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中数据组织的一个概念,首先是Excel软件,一个软件可以打开多个xlsx
文件,每个文件中对应多个sheet
,每个sheet
中有多个单元格,对应关系如下表所示。
Excel | Excel.exe | test.xlsx | sheet1 | A1 |
---|---|---|---|---|
C# | app | wbk | whs | whs.Cells[1,1] |
而通过这样一个简单的例程,也就理解了C#
操作Excel的基本流程:打开->操作->关闭。
其打开流程,包括打开Excel程序、打开Excel文件以及打开sheet;关闭则包括关闭Excel文件和Excel程序。
Excel读取
读取与写入的流程相似,但写入时需要至少有一个Excel文件,刚好刚刚创建了一个
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);
命令行中输出结果为
您打开了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.UsedRange.CurrentRegion表示已写入的区域,其对应的行数和列数就比较有代表性,根据这两个值进行循环,就可以把刚刚写入的数据打印出来了。
以上就是C#读写Excel的流程步骤的详细内容,更多关于C#读写Excel的资料请关注脚本之家其它相关文章!