当前位置: 首页 > news >正文

基于.NET 8.0,C#中Microsoft.Office.Interop.Excel来操作office365的excel

开发环境:

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.0Excel 2010 (Office 2010)
15.0.0Excel 2013 (Office 2013)
16.0.0Excel 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);
}
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单元格
string cellValue2 = worksheet.Cells[1, "A"].Value.ToString(); // 行1,A列,即读取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

http://www.lryc.cn/news/471087.html

相关文章:

  • 使用无线方式连接Android设备进行调试的两种方法
  • Valgrind的使用
  • 微信小程序瀑布流实现,瀑布流长度不均等解决方法
  • Notepad++通过自定义语言实现日志按照不同级别高亮
  • 2024年四川省大学生程序设计竞赛 补题记录
  • 17_事件的处理
  • 1FreeRTOS学习(队列、二值信号量、计数型信号量之间的相同点和不同点)
  • 数据库设计与范式及其应用
  • 笔记-配置PyTorch(CUDA 12.2)
  • [C++]——红黑树(附源码)
  • 网络文件系统搭建
  • 基于vue、VantUI、django的程序设计
  • 京准电钟解读:NTP网络对时服务器助力厂区改造方案
  • 本地docker-compose仓库搭建以及推送docker镜像到仓库
  • WPF+MVVM案例实战(八)- 自定义开关控件封装实现
  • 单机kafka性能需要高性能的硬件做支撑
  • Spark 的 Http Broadcast 和 Torrent Broadcast 广播实现类的对比
  • 030_Subplot_In_Matlab中多图绘制之subplot函数
  • 免费云服务器有什么使用限制和注意事项?
  • 3-ZYNQ 折腾记录 -PS_PL AXI Interfaces
  • 总结test
  • 在 On hold 期刊 eLife 上发表一篇生信文章需要什么工作量?
  • 使用Django框架开发企业级Web应用
  • 认识线程 — JavaEE
  • 【C++单调栈】853. 车队|1678
  • 第十届文荣奖华丽开幕,郁葱以青春与努力绽放青年演员光芒
  • CMake 生成器表达式介绍
  • ubuntu 20.04编译驱动报gcc-12 not found错误
  • docker sameersbn/bind dns服务器
  • 错误:无法推送一些引用到 ‘https://gitee.com/chek_kk/python-electron-app.git‘