C#操作Excel文件的图表对象Chart问题
Kw学编程 2014-08-09 12:15:59 我在做一个自动计算导入数据,计算结果,并生成统计图表(柱状图),最后导出为Excel文件。
一开始我开发环境使用office2010 plus,在自己电脑导入导出生成图表一切都正常。后来交由用户使用,却始终提示接口无法转换。我发现用户安装了和我同个程序包安装的office2010 plus后,可以正常导出图表。结合网上的办法,我卸载了我自己的office2010和WPS, 安装了一个office2003 professional edition。希望能和用户一样。
新的问题来了。在我本机也不能导出图表了!!
我是引用的Microsoft.Office.Interop.Excel 版本11.0.0.0 和Office 版本11.0.0.0,现在出现问题 和异常来自 HRESULT:0x800A03EC 的错误。 网上多说是OFFICE版本和注册表的问题,我已经重新安装一次了。
调试过程中,我发现,对EXCEL的图表对象Chart操作时会引发 异常来自 HRESULT:0x800A03EC 的错误。
我把所有对图形对象的操作注释掉后,只 向excel里写数据,【可以】正常导出和生成EXCEL !
求问!为何EXCEL可以写数据,但操作图表对象时就会引发 HRESULT:0x800A03EC 的错误?且我之前的版本是完全可以导出图表的~说明代码没有错误。我将操作图表的代码帖一下。求大神!!
以前的问题都可以在CSDN找到同样的问题和解答,这次没有了。。初次提问,谢谢关注!
/// <summary>
/// 自定义图表
/// </summary>
public void InsertUerDefinedChart(Excel.Worksheet sheet, Excel.XlChartType ChartType,string chartTitle,
int DataSourcesX1, int DataSourcesY1, int DataSourcesX2, int DataSourcesY2,
double plotAreaWidth, double plotAreaHeight,
bool showLegend, bool showLabelValue)
{
// 定义图表
wb.Charts.Add(Type.Missing, Type.Missing, 1, Type.Missing);
// 图表类型
wb.ActiveChart.ChartType = ChartType;// Excel.XlChartType.xlColumnClustered;//簇状柱形图
// 数据源
// 注意指定数据系列是X轴还是Y轴 Excel.XlRowCol.xlColumns
wb.ActiveChart.SetSourceData(sheet.get_Range(sheet.Cells[DataSourcesX1, DataSourcesY1], sheet.Cells[DataSourcesX2, DataSourcesY2]), Excel.XlRowCol.xlColumns);//
// 位置 【【【【【【【【【【异常代码在这里】】】】】】】】】】】】】
wb.ActiveChart.Location(Excel.XlChartLocation.xlLocationAsObject, sheet.Name);//Sheet名 这句没问题
wb.ActiveChart.HasTitle = true;//显示标题 【从该句引发异常,所有对Chart对象的操作都引发异常】
wb.ActiveChart.ChartTitle.Text = chartTitle;//标题内容
wb.ActiveChart.ChartTitle.AutoScaleFont = false;//取消字体大小自动缩放
wb.ActiveChart.ChartTitle.Font.Size = 14;//图表标题字体
wb.ActiveChart.ChartTitle.Font.Bold = true;//加粗
wb.ActiveChart.ChartArea.Width = 600;
wb.ActiveChart.ChartArea.Height = 300;