vato 在 Word 文档中使用 C# 嵌入 Excel 图表

news/2024/7/21 7:26:09 标签: excel, vsto

如果你想在 Word 文档中使用 C# 嵌入 Excel 图表,你可以通过以下步骤实现:

1. 创建并配置 Excel 图表:
  

   using Excel = Microsoft.Office.Interop.Excel;
   
   // 创建 Excel 应用程序
   Excel.Application excelApp = new Excel.Application();
   excelApp.Visible = true; // 用于调试时显示 Excel 应用程序
   
   // 添加新工作簿
   Excel.Workbook workbook = excelApp.Workbooks.Add();
   Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
   
   // 添加一些样本数据
   worksheet.Cells[1, 1].Value = "类别";
   worksheet.Cells[1, 2].Value = "数值 1";
   worksheet.Cells[1, 3].Value = "数值 2";
   
   worksheet.Cells[2, 1].Value = "A";
   worksheet.Cells[2, 2].Value = 10;
   worksheet.Cells[2, 3].Value = 20;
   
   worksheet.Cells[3, 1].Value = "B";
   worksheet.Cells[3, 2].Value = 15;
   worksheet.Cells[3, 3].Value = 25;
   
   // 添加图表
   Excel.ChartObjects chartObjects = (Excel.ChartObjects)worksheet.ChartObjects();
   Excel.ChartObject chartObject = chartObjects.Add(100, 100, 300, 200);
   Excel.Chart chart = chartObject.Chart;
   
   // 设置图表数据范围
   Excel.Range chartDataRange = worksheet.Range["A1:C3"];
   chart.SetSourceData(chartDataRange);


  

2. 将 Excel 图表嵌入到 Word 文档:
 
 

 using Word = Microsoft.Office.Interop.Word;
   using System.Runtime.InteropServices;
   
   // 创建 Word 应用程序
   Word.Application wordApp = new Word.Application();
   wordApp.Visible = true; // 用于调试时显示 Word 应用程序
   
   // 添加新文档
   Word.Document doc = wordApp.Documents.Add();
   Word.Range rng = doc.Range();
   
   // 复制 Excel 图表
   chart.ChartArea.Copy();
   
   // 将图表粘贴到 Word 文档
   rng.PasteExcelTable(false, false, false);
   
   // 清理 Excel
   excelApp.Quit();
   
   // 清理 Word
   Marshal.ReleaseComObject(rng);
   Marshal.ReleaseComObject(doc);
   Marshal.ReleaseComObject(wordApp);


  

请确保你的项目中引用了 Microsoft Word 和 Microsoft Excel 主互操作程序集(PIAs)。此外,使用 `Marshal.ReleaseComObject` 适当地处理 COM 对象的清理,以避免内存泄漏。

这个例子创建了一个 Excel 图表,然后将其复制并粘贴到 Word 文档中。在 Word 中,对图表的进一步操作可能会受到限制,因为 Word 不像 Excel 那样直接支持对图表数据的详细操作。


http://www.niftyadmin.cn/n/5361082.html

相关文章

大数据应用开发3-Scala笔记1

一、编程框架 Scala语言是在JVM上运行的,兼容Java语法 区分大小写 - Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义。 类名 - 对于所有的类名的第一个字母要大写。 如果需要使用几个单词来构成一个类的名称,每个…

美团启动架构调整:聚力核心本地商业,提升科技与境外业务优先级

2月2日,美团CEO王兴发布内部邮件宣布新的组织架构调整。邮件显示,美团对核心本地商业相关多项业务进行了整合,并进一步提升了科技与国际化相关业务的优先级。 在核心本地商业上,美团对过去相对独立的事业群进行了整合。主要调整包…

Redis(十一)单线程VS多线程

文章目录 概述为何选择单线程主要性能瓶颈多线程特性和IO多路复用概述Unix网络编程中的五种IO模型Blocking IO-阻塞IONoneBlocking IO-非阻塞IOIO multiplexing-IO多路复用signal driven IO-信号驱动IOasynchronous IO-异步IO 场景:引出epoll总结 开启Redis多线程其…

关于el-select组件修改v-model值之后重新选择却选择不上的问题

本人遇到的问题是这样的 <el-selectref"jingzhongSelect"clearablestyle"width: 100%"v-model"form.policeCategoryId"><el-optionv-for"item in policeCategoryArr":key"item.id":value"item.id":label…

Arduino控制器使用Udp网络对8路IO输出控制

一、实现功能 1、创建串口连接&#xff0c;将接收的Udp数据通过串口发送出去。 2、创建Udp连接&#xff0c;用以接收Udp数据和对发送数据的Udp机器反馈Udp数据 3、对接收到的Udp数据进行解析&#xff0c;然后对8路IO进行输出控制。 4、1对应IO输出低电平&#xff0c;‘0’对…

常见消息队列:ActiveMQ、RabbitMQ、RocketMQ、Kafka的区别总结

目录 前言 1、常见消息队列 1.ActiveMQ 2.RabbitMQ 3.RocketMQ 4.Kafka 2、区别 1.消息传递模型 2.消息持久化 3.消息顺序性 4.可靠性 5.生态系统和社区支持 6.表格对比 前言 消息队列可以实现应用程序之间的异步通信&#xff0c;能够实现异步消息的发送和接收&am…

RISC-V指令格式

RISC-V指令格式 1 RISC-V指令集命名规范2 RISC-V指令集组成2.1 基础整数指令集2.2 扩展指令集 3 RISC-V指令格式3.1 指令表述3.2 指令格式 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 RISC-V指令集命名规范 前面提到过RV32I&#xff0c;这是…

网络协议与攻击模拟_14DNS欺骗

DNS欺骗就是利用某种方式将我们访问的域名解析到其他服务器上&#xff0c;从而使得我们无法正常访问到原本我们想要访问的网站。 一、DNS欺骗过程 首先在windows server 2016虚拟机上搭建网站服务&#xff0c;kali作为攻击机从而实现中间人攻击&#xff0c;使用ettercap工具的…