EPPlus的介绍
EPPlus是一个用于处理Excel文件的开源C#库。它允许开发人员创建、读取和编辑Excel工作簿、工作表和单元格,而无需安装Microsoft Office或使用COM互操作。EPPlus是在.NET平台上构建的,因此它与.NET应用程序无缝集成,并提供了强大的Excel文件处理功能。
EPPlus的基本使用
从NuGet导入EPPlus
从NuGet上搜索EPPlus,如下图所示,然后添加到项目
一个简单的案例
我现在想从Excel中导入数据并进行一些处理,然后需要把处理完成后的数据再写入一个Excel文件
需要导入的数据所下图所示:
总共有392578条数据
导入数据的代码如下所示:
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel Files (*.xlsx; *.xls)|*.xlsx; *.xls";
openFileDialog.FilterIndex = 1;
openFileDialog.Multiselect = false;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
selectedFile = openFileDialog.FileName;
MessageBox.Show($"您选中的文件路径为:{selectedFile}");
ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;
using (var package = new ExcelPackage(new System.IO.FileInfo(selectedFile)))
{
// 获取工作簿的第一个工作表
var worksheet = package.Workbook.Worksheets[0];
// 获取工作表的行数和列数
int rowCount = worksheet.Dimension.Rows;
int colCount = worksheet.Dimension.Columns;
// 循环遍历工作表中的数据
for (int row = 0; row < rowCount - 1; row++)
{
RawData data = new RawData();
data.id = (double)worksheet.Cells[row + 2, 1].Value;
data.speed = (double)worksheet.Cells[row + 2, 2].Value;
data.power = (double)worksheet.Cells[row + 2, 3].Value;
data.fcrr = (double)worksheet.Cells[row + 2, 4].Value;
DataList.Add(data);
}
MessageBox.Show("导入数据成功!!!");
}
运行看看
导入39万条数据的性能分析如下图所示,不到10秒,内存只从一百多M升高到了四百多M
成功导入Excel数据,如下图所示:
当我们对数据进行的一些处理完成之后,需要重新写入Excel
写入Excel的代码如下所示:
// 设置Excel文件路径
string filePath = "test.xlsx";
// 创建一个新的Excel包
FileInfo file = new FileInfo(filePath);
using (ExcelPackage package = new ExcelPackage(file))
{
// 添加一个工作表
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");
string[] headers = { "序号", "主机转速取整", "主机功率取整", "主机油耗率-右" };
// 写入表头
for (int col = 1; col <= headers.Length; col++)
{
worksheet.Cells[1, col].Value = headers[col - 1];
}
// 写入数据
for (int row = 1; row <= FirstWashData.Count; row++)
{
worksheet.Cells[row + 1, 1].Value = FirstWashData[row - 1].id;
worksheet.Cells[row + 1, 2].Value = FirstWashData[row - 1].speed;
worksheet.Cells[row + 1, 3].Value = FirstWashData[row - 1].power;
worksheet.Cells[row + 1, 4].Value = FirstWashData[row - 1].fcrr;
}
// 保存Excel文件
package.Save();
MessageBox.Show("写入到Excel文件成功!!!");
需要写入的2万9千多条数据
写入2万9千多条数据非常快,不到一秒就完成了
打开写入的Excel,成功写入2万九千多条数据
总结
使用EPPlus方便了我们操作Excel,比起使用**Microsoft.Office.Interop.Excel**效率提升了很多,使用方式也更简单了。
文章出处登录后可见!
已经登录?立即刷新