• c# 导出Excel文件的几种方式 简单试验


    1.概要

    生成excel文件并保存

    2.运行结果

    2.1 生成文件

    2.2 生成的内容 

    3.试验

    3.1 试验1:使用 Microsoft Office Interop Excel 组件导出 Excel 文件(需要安装 Microsoft Excel 或者 Microsoft Office 套件)

    1. using System;
    2. using System.Data;
    3. using System.IO;
    4. using Microsoft.Office.Interop.Excel;
    5. namespace ExcelOffice
    6. {
    7. internal class Program
    8. {
    9. static void Main(string[] args)
    10. {
    11. Console.WriteLine("Excel试验-ClosedXML");
    12. Program p = new Program();
    13. p.main();
    14. Console.ReadKey();
    15. }
    16. private void main()
    17. {
    18. test();
    19. }
    20. private void test()
    21. {
    22. // 创建一个 DataTable 对象来存储数据
    23. System.Data.DataTable dataTable = new System.Data.DataTable("MyData");
    24. // 添加列到 DataTable
    25. dataTable.Columns.Add("Name", typeof(string));
    26. dataTable.Columns.Add("Age", typeof(int));
    27. // 向 DataTable 中添加数据行
    28. dataTable.Rows.Add("张三", 30);
    29. dataTable.Rows.Add("李四", 25);
    30. // 使用 Microsoft Office Interop Excel 组件导出 Excel 文件
    31. Application excelApp = new Application();
    32. Workbook workbook = excelApp.Workbooks.Add();
    33. //Workbook workbook = excelApp.Workbooks.Add(null);
    34. //Workbook workbook = excelApp.Workbooks[0];
    35. Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
    36. int row = 1;
    37. foreach (DataRow dataRow in dataTable.Rows)
    38. {
    39. worksheet.Cells[row, 1] = dataRow["Name"].ToString();
    40. worksheet.Cells[row, 2] = dataRow["Age"];
    41. row++;
    42. }
    43. // 将 Excel 文件保存到磁盘
    44. string fileName = @"MyExcelFile.xlsx";
    45. workbook.SaveAs(fileName);
    46. // 关闭 Excel 应用程序和工作簿对象,并释放资源
    47. workbook.Close();
    48. excelApp.Quit();
    49. System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
    50. System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
    51. System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
    52. }
    53. }
    54. }

    3.2 试验2-NPOI

    1. using NPOI.HSSF.UserModel;
    2. using NPOI.SS.UserModel;
    3. using System;
    4. using System.Data;
    5. using System.IO;
    6. namespace Excel试验
    7. {
    8. internal class Program
    9. {
    10. static void Main(string[] args)
    11. {
    12. Console.WriteLine("Excel试验-NPOI");
    13. Program p = new Program();
    14. p.main();
    15. Console.ReadKey();
    16. }
    17. private void main()
    18. {
    19. test();
    20. }
    21. private void test()
    22. {
    23. // 创建一个 DataTable 对象来存储数据
    24. DataTable dataTable = new DataTable("MyData");
    25. // 添加列到 DataTable
    26. dataTable.Columns.Add("Name", typeof(string));
    27. dataTable.Columns.Add("Age", typeof(int));
    28. // 向 DataTable 中添加数据行
    29. dataTable.Rows.Add("张三", 30);
    30. dataTable.Rows.Add("李四", 25);
    31. IWorkbook workbook = new HSSFWorkbook();
    32. ISheet worksheet = workbook.CreateSheet("Sheet1");
    33. int row = 0;
    34. foreach (DataRow dataRow in dataTable.Rows)
    35. {
    36. IRow newRow = worksheet.CreateRow(row);
    37. newRow.CreateCell(0).SetCellValue(dataRow["Name"].ToString());
    38. newRow.CreateCell(1).SetCellValue(Convert.ToInt32(dataRow["Age"]));
    39. row++;
    40. }
    41. // 将 Excel 文件保存到磁盘
    42. string fileName = @"MyExcelFile.xls";
    43. using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
    44. {
    45. workbook.Write(fs);
    46. }
    47. // 释放资源
    48. workbook.Dispose();
    49. }
    50. }
    51. }

    3.3 试验3 EPPlus

    1. using OfficeOpenXml;
    2. using System;
    3. using System.Data;
    4. using System.IO;
    5. namespace ExcelEPPlus
    6. {
    7. internal class Program
    8. {
    9. static void Main(string[] args)
    10. {
    11. Console.WriteLine("Excel试验-EPPlus");
    12. Program p = new Program();
    13. p.main();
    14. Console.ReadKey();
    15. }
    16. private void main()
    17. {
    18. test();
    19. }
    20. private void test()
    21. {
    22. // 创建一个 DataTable 对象来存储数据
    23. DataTable dataTable = new DataTable("MyData");
    24. // 添加列到 DataTable
    25. dataTable.Columns.Add("Name", typeof(string));
    26. dataTable.Columns.Add("Age", typeof(int));
    27. // 向 DataTable 中添加数据行
    28. dataTable.Rows.Add("张三", 30);
    29. dataTable.Rows.Add("李四", 25);
    30. ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
    31. // 使用 EPPlus 组件导出 Excel 文件
    32. using (ExcelPackage excelPackage = new ExcelPackage())
    33. {
    34. ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1");
    35. int row = 1;
    36. foreach (DataRow dataRow in dataTable.Rows)
    37. {
    38. worksheet.Cells[row, 1].Value = dataRow["Name"].ToString();
    39. worksheet.Cells[row, 2].Value = Convert.ToInt32(dataRow["Age"]);
    40. row++;
    41. }
    42. // 将 Excel 文件保存到磁盘
    43. string fileName = @"MyExcelFile.xlsx";
    44. FileInfo fileInfo = new FileInfo(fileName);
    45. excelPackage.SaveAs(fileInfo);
    46. }
    47. }
    48. }
    49. }

    3.4 试验3 ClosedXML

    1. using ClosedXML.Excel;
    2. using System;
    3. using System.Collections.Generic;
    4. using System.Data;
    5. using System.Linq;
    6. using System.Text;
    7. using System.Threading.Tasks;
    8. namespace ExcelClosedXML
    9. {
    10. internal class Program
    11. {
    12. static void Main(string[] args)
    13. {
    14. Console.WriteLine("Excel试验-ClosedXML");
    15. Program p = new Program();
    16. p.main();
    17. Console.ReadKey();
    18. }
    19. private void main()
    20. {
    21. test();
    22. }
    23. private void test()
    24. {
    25. // 创建一个 DataTable 对象来存储数据
    26. DataTable dataTable = new DataTable("MyData");
    27. // 添加列到 DataTable
    28. dataTable.Columns.Add("Name", typeof(string));
    29. dataTable.Columns.Add("Age", typeof(int));
    30. // 向 DataTable 中添加数据行
    31. dataTable.Rows.Add("张三", 30);
    32. dataTable.Rows.Add("李四", 25);
    33. // 使用 ClosedXML 组件导出 Excel 文件
    34. using (XLWorkbook workbook = new XLWorkbook())
    35. {
    36. IXLWorksheet worksheet = workbook.AddWorksheet("MySheet");
    37. int row = 1;
    38. foreach (DataRow dataRow in dataTable.Rows)
    39. {
    40. worksheet.Cell(row, 1).Value = dataRow["Name"].ToString();
    41. worksheet.Cell(row, 2).Value = Convert.ToInt32(dataRow["Age"]);
    42. // 设置单元格样式
    43. worksheet.Cell(row, 2).Style.Font.Bold = true;
    44. worksheet.Cell(row, 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
    45. row++;
    46. }
    47. // 将 Excel 文件保存到磁盘
    48. string fileName = @"MyExcelFile.xlsx";
    49. workbook.SaveAs(fileName);
    50. }
    51. }
    52. }
    53. }

  • 相关阅读:
    push,pop指令
    Spring的注解总结
    汽车零部件加工行业工业互联网智能工厂解决方案
    设计模式——策略模式(Strategy Pattern)+ Spring相关源码
    淘宝/天猫api 获取淘宝商品详情高级版 API接口
    Unity的BuildPlayerProcessor:深入解析与实用案例
    git切换远程仓库源步骤
    “AURORA-M:首个遵循人类审查安全指令微调的开源多语言模型
    济南槐荫吴家堡 国稻种芯·中国水稻节:山东稻出黄河大米
    配置Jedis连接池
  • 原文地址:https://blog.csdn.net/xie__jin__cheng/article/details/133337493