gpt4 book ai didi

c# - Excel Interop 应用图表模板

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:36 25 4
gpt4 key购买 nike

问题概述:

我正在使用 C# 为客户自动生成报告 (excel),并提供“ native ”excel 支持 (microsoft.office.interop.excel) 和 EPPlus图书馆。

我的客户对图表设计不是很灵活,所以我的图表必须与他们的完全相同。

没问题,我使用 Excel 2010 导出了他们的图表模板

什么不起作用:

我无法通过代码应用任何图表模板

我尝试过的:

1 - EPPlus:不支持将模板加载到图表

2 - InteropExcel:应用模板失败引发异常,这是我的代码:

        Application excelApp = null;
Workbook workbook = null;
Microsoft.Office.Interop.Excel.Worksheet worksheet = null;

try
{
excelApp = new Microsoft.Office.Interop.Excel.Application();
workbook = excelApp.Workbooks.Open(config.DiretorioRelatorio);
worksheet = workbook.Sheets[Consts.RECOVERED_SHEET];

string template = config["templatePath"]; // .crtx file

ChartObjects charts = worksheet.ChartObjects ();
ChartObject chart = ((ChartObject)charts.Item (0));
chart.Chart.ApplyChartTemplate(template);

}
catch (Exception ex)
{
Console.WriteLine (ex.Message);
}
finally
{
workbook.Save ();
workbook.Close ();
excelApp.Quit ();

ReleaseObject (worksheet);
ReleaseObject (workbook);
ReleaseObject (excelApp);
}

这段代码要么抛出:

1 - excel 互操作 HRESULT:0x800A03EC(将 ChartObjects[0] 转换为 ChartObject)

2 - 消息过滤器表明应用程序正忙。 (HRESULT 异常:0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

TL:DR:

如何使用 C# 将文件中的图表模板应用到电子表格中的现有图表?

编辑:

粘贴代码:ExcelInteropProblem

最佳答案

VBA 中的索引不是从零开始的,所以当从 .Net 到 Excel Interop 时,您从 1 开始,即使 C# 中的索引是,所以改变这个:

ChartObject chart   = ((ChartObject)charts.Item (0));

对此:

ChartObject chart   = ((ChartObject)charts.Item (1));

关于c# - Excel Interop 应用图表模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20883776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com