开发环境:
Visual Studio 2022
office365
项目模板:WPF应用程序
框架:.NET 8.0
依赖:Microsoft.Office.Interop.Excel
注意:
1.使用Microsoft.Office.Interop.Excel库时,服务器或电脑里面必须安装得有Excel
管理Nuget程序包中Microsoft.Office.Interop.Excel目前没有16.0版本(2024.10月),所以不能对office365使用。以下是版本对应关系。
Microsoft.Office.Interop.Excel版本 |
对应的Excel版本 |
14.0.0 | Excel 2010 (Office 2010) |
15.0.0 | Excel 2013 (Office 2013) |
16.0.0 | Excel 2016、Excel 2019、Excel 365 (Office 2016, Office 2019, Office 365) |
在Visual Studio 2022 中导入Microsoft.Office.Interop.Excel16.0版本的依赖:
打开COM引用
勾选Microsoft Excel 16.0 Object Library后确定。
代码:
1.导入依赖:
using System;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
2.基本框架:
var excelApp = new Excel.Application();
string excel_file_path = @"C:\path\to\your\file.xlsx";
Excel.Workbook workbook = excelApp.Workbooks.Open(excel_file_path);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//操作sheet1
try{
/*
具体对excel的添加操作代码
*/
workbook.Save();// 保存更改
}
catch (Exception ex) {
Debug.WriteLine($"发生错误: {ex.Message}");
}
finally { // 确保释放 COM 对象
if (workbook != null) {
workbook.Close(false);
Marshal.ReleaseComObject(workbook);
}
workbook.Close(false);//关闭工作簿时不保存更改
Marshal.ReleaseComObject(workbook);
excelApp.Quit();
Marshal.ReleaseComObject(excelApp);
// 强制垃圾回收以确保所有 COM 对象被清理
GC.Collect();
GC.WaitForPendingFinalizers();
3.单元格读写
worksheet.Cells[1, 1] = "1"; // 行1,列1,即A1单元格写入数字1
string cellValue = worksheet.Cells[1, 1].Value.ToString(); // 行1,列1,即读取A1单元格
4.excel转PDF
导入依赖
using System.IO;
代码在workbook.Save();// 保存更改 后执行
string pdfFilePath = System.IO.Path.ChangeExtension(excel_file_path, ".pdf");//将excel后缀名改为PDF
workbook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, pdfFilePath);//另存为PDF