如果你想在 Word 文档中使用 C# 嵌入 Excel 图表,你可以通过以下步骤实现:
- 创建并配置 Excel 图表:
cs
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);
- 将 Excel 图表嵌入到 Word 文档:
cs
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 那样直接支持对图表数据的详细操作。