• 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. }

  • 相关阅读:
    红蓝对抗闭环操作流程简单梳理和介绍
    messageBox的入门学习
    平衡二叉树之红黑树
    ansible的主机清单和Playbook(剧本)
    蔚来杯“2022牛客暑期多校训练营10
    借助开源表单设计器,让办公流程化更顺畅!
    设计模式理论(一)软件设计原则
    Redis持久化机制
    小公司的应用服务部署历程
    C语言_用于ADC数据的均值滤波算法
  • 原文地址:https://blog.csdn.net/xie__jin__cheng/article/details/133337493