操作Execel c#有许多的方案,这里我们使用EPPlus来操作,它的优势是操作简单,非常容易上手,下面我就以一个实际的案例来实现演示它是如何进行操作的。我们本次使用的环境是Asp.net 8 mvc。
第一步:创建工程文件
这一步没什么好说的,根据您的需要创建工程文件,我选择的是Asp.net 8 mvc,当然您也可以根据自己的习惯来选择方案。
第二步:通过NuGet添加EPPlus
点击工程文件右边 资源解决方案->依赖项 右键选择管理NuGet搜索EPPlus安装即可。
第三步:开始编写代码
我们将编写一段代码,作用是将表B里的数据根据情况比如表B里的电话号码写入到表A里。简单的说就是将表B里的数据根据情况合并到表A里,代码如下
public static string ReadXLS(string FilePath,string GetFile) { FileInfo existingFile = new(FilePath); FileInfo getfile = new(GetFile); ExcelPackage.LicenseContext = LicenseContext.NonCommercial;//设置商用还是非商用 using ExcelPackage package = new(existingFile); //get the first worksheet in the workbook ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; //读取第一面 int colCount = worksheet.Dimension.End.Column; //get Column Count 获得列数 int rowCount = worksheet.Dimension.End.Row; //get row count 获得行数 using ExcelPackage get = new(getfile); ExcelWorksheet getsheet = get.Workbook.Worksheets[0]; int cols = getsheet.Dimension.End.Column; //get Column Count int rows = getsheet.Dimension.End.Row; //get row count string data = ""; int err = 0; try { for (int row = 1; row <= rowCount; row++)//循环每一行 { string db = worksheet.Cells[row, 3].Value.ToString()!.Trim();//获得当前C列的值 for (int getrow = 1; getrow <= rows; getrow++) { err=getrow; Var getdb = ""; var test = getsheet.Cells[getrow, 5]; string tel = ""; string xiaozu =""; if (getsheet.Cells[getrow, 4].Value != null) { getdb = getsheet.Cells[getrow, 4].Value.ToString()!.Trim(); } if (getsheet.Cells[getrow, 5].Value != null) { tel = getsheet.Cells[getrow, 5].Value.ToString()!.Trim(); } if (getsheet.Cells[getrow, 2].Value != null) { xiaozu = getsheet.Cells[getrow, 2].Value.ToString()!.Trim(); } //根据情况写入相应数据,excel里的A对应1,B对应2以此类推 worksheet.Cells[row, 4].Value = tel; worksheet.Cells[row, 1].Value = xiaozu; } } } catch (Exception e) { return e+"标识码:"+err; } package.Save();//保存表 return data; }
直接调用
My.ReadXLS("D:\\MyOffice\\1.xlsx", "D:\\MyOffice\\2.xlsx")
当然上述代码只是一个示例,大家可以根据自己的实际情况进行修改,怎么样是不是很简单。