当前位置:   article > 正文

ClosedXML

ClosedXML

一、类库介绍

ClosedXML是一个用于读取、操作和写入Excel 2007+ (.xlsx, .xlsm)文件的.NET第三方库。它基于OpenXML,但与OpenXML相比,ClosedXML具有更高的性能和更易于使用的API接口。

ClosedXML支持XML文档的解析和生成,可以处理复杂的XML结构。同时,它还提供了丰富的API,可以方便地进行XML文档的查询、修改、添加和删除操作。此外,ClosedXML还支持XPath和XSLT查询,可以进行高效的XML数据检索和转换。

在使用ClosedXML时,您需要将ClosedXML.dll添加到您的项目中,并使用相关的API进行Excel文件的读取和写入。ClosedXML支持多种数据类型,包括字符串、数字、日期、布尔值等,并支持单元格格式设置。此外,您还可以使用ClosedXML进行样式设置,包括字体、边框、颜色等。

除了基本的Excel文件操作,ClosedXML还支持图表、公式、数据验证、条件格式等高级功能。同时,ClosedXML还提供了多种异常处理机制,可以帮助您更好地处理异常情况。

官网:

https://docs.closedxml.io/en/latest/

https://github.com/ClosedXML/ClosedXML

二、安装方式

2.1 直接nuget搜索安装

2.2 命令行安装方式

工具→Nuget包管理器→程序包管理器控制台

输入如下命令:

代码语言:javascript

复制

Install-Package ClosedXML

三、性能测试

3.1 保存性能

3.2 读取性能

四、测试案例

4.1 直接插入DataTable

代码语言:javascript

复制

  1. /// <summary>
  2. /// 插入DataTable
  3. /// </summary>
  4. private static void InsertDataTable()
  5. {
  6. // 创建一个新的 DataTable 对象
  7. DataTable dataTable = new DataTable();
  8. // 定义表的列
  9. dataTable.Columns.Add("ID", typeof(int));
  10. dataTable.Columns.Add("Name", typeof(string));
  11. dataTable.Columns.Add("Age", typeof(int));
  12. // 添加数据行
  13. dataTable.Rows.Add(1, "John", 25);
  14. dataTable.Rows.Add(2, "Alice", 30);
  15. dataTable.Rows.Add(3, "Bob", 40);
  16. using (var workbook = new XLWorkbook())
  17. {
  18. var worksheet = workbook.Worksheets.Add("Sheet1");
  19. worksheet.FirstCell().InsertTable(dataTable);
  20. workbook.SaveAs("D:\\tableDemo.xlsx");
  21. }
  22. }

4.2 直接插入list

代码语言:javascript

复制

  1. /// <summary>
  2. /// 插入list
  3. /// </summary>
  4. private static void InsertList()
  5. {
  6. List<UserInfo> list = new List<UserInfo>();
  7. list.Add(new UserInfo
  8. {
  9. name = "小明",
  10. age = 30,
  11. address = "北京"
  12. });
  13. list.Add(new UserInfo
  14. {
  15. name = "小李",
  16. age = 20,
  17. address = "郑州"
  18. });
  19. list.Add(new UserInfo
  20. {
  21. name = "小强",
  22. age = 26,
  23. address = "上海"
  24. });
  25. using (var workbook = new XLWorkbook())
  26. {
  27. var worksheet = workbook.Worksheets.Add("Sheet1");
  28. // 设置列头
  29. worksheet.Cell("A1").Value = "姓名";
  30. worksheet.Cell("A1").Style.Font.Bold = true;
  31. worksheet.Cell("A1").Style.Fill.SetBackgroundColor(XLColor.Gray);
  32. worksheet.Cell("B1").Value = "年龄";
  33. worksheet.Cell("B1").Style.Font.Bold = true;
  34. worksheet.Cell("B1").Style.Fill.SetBackgroundColor(XLColor.Gray);
  35. worksheet.Cell("C1").Value = "地址";
  36. worksheet.Cell("C1").Style.Font.Bold = true;
  37. worksheet.Cell("C1").Style.Fill.SetBackgroundColor(XLColor.Gray);
  38. var table = worksheet.Cell("A2").InsertData(list);
  39. workbook.SaveAs("D:\\listDemo.xlsx");
  40. }
  41. }

4.3 添加图片

代码语言:javascript

复制

  1. /// <summary>
  2. /// 插入图片
  3. /// </summary>
  4. private static void InsertImage()
  5. {
  6. using (var workbook = new XLWorkbook())
  7. {
  8. var worksheet = workbook.Worksheets.Add("Sheet1");
  9. worksheet.AddPicture("D:\\1.png") .MoveTo(worksheet.Cell(1, 1));
  10. workbook.SaveAs("D:\\imageDemo.xlsx");
  11. }
  12. }

4.4 大批量导出

代码语言:javascript

复制

  1. /// <summary>
  2. /// 大批量插入list 20万条记录时间5.9
  3. /// </summary>
  4. private static void BatchInsertList()
  5. {
  6. Stopwatch stopwatch = new Stopwatch();
  7. stopwatch.Start();
  8. List<UserInfo> list = new List<UserInfo>();
  9. for (int i = 0; i < 200000; i++)
  10. {
  11. list.Add(new UserInfo
  12. {
  13. name = "小明"+i,
  14. age = 30,
  15. address = "北京"
  16. });
  17. }
  18. using (var workbook = new XLWorkbook())
  19. {
  20. var worksheet = workbook.Worksheets.Add("Sheet1");
  21. // 设置列头
  22. worksheet.Cell("A1").Value = "姓名";
  23. worksheet.Cell("A1").Style.Font.Bold = true;
  24. worksheet.Cell("A1").Style.Fill.SetBackgroundColor(XLColor.Gray);
  25. worksheet.Cell("B1").Value = "年龄";
  26. worksheet.Cell("B1").Style.Font.Bold = true;
  27. worksheet.Cell("B1").Style.Fill.SetBackgroundColor(XLColor.Gray);
  28. worksheet.Cell("C1").Value = "地址";
  29. worksheet.Cell("C1").Style.Font.Bold = true;
  30. worksheet.Cell("C1").Style.Fill.SetBackgroundColor(XLColor.Gray);
  31. var table = worksheet.Cell("A2").InsertData(list);
  32. workbook.SaveAs("D:\\batchListDemo.xlsx");
  33. }
  34. stopwatch.Stop();
  35. // 获取代码执行时间
  36. TimeSpan elapsedTime = stopwatch.Elapsed;
  37. // 输出执行时间
  38. Console.WriteLine("10万条数据导出执行时间: {0}", elapsedTime.TotalSeconds+" 秒");
  39. Console.ReadKey();
  40. }

五、总结

总之,ClosedXML是一个功能强大、易于使用、性能优越的.NET Excel库,适用于各种Excel应用程序的开发。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/767898
推荐阅读
相关标签
  

闽ICP备14008679号