The Last Day Of Summer

.NET技术 C# ASP.net ActiveReport SICP 代码生成 报表应用 RDLC
posts - 305, comments - 1913, trackbacks - 76, articles - 3
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

下面的代码使用一个现有的统计图Excel文件,加载这个文件,设置某一项的值和统计图的表示方式,然后保存到另一个Excel文件里。如果是VS2005+Office2003,也可以选择使用Visual Studio Tools for Office来作。

Excel.Application m_objExcel = null;

Excel._Workbook m_objBook = null;

Excel._Chart m_objChart = null;

Excel.ChartGroup m_objChartGroup = null;

Excel.Series m_objSeries = null;

object m_objOpt = System.Reflection.Missing.Value;

try

{

        m_objExcel = new Excel.Application();

        m_objBook = m_objExcel.Workbooks.Open("z:\\Book11.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

        m_objChart = (Excel._Chart)m_objExcel.Charts.get_Item(1);

        m_objChart.BarShape = Excel.XlBarShape.xlCylinder;

        m_objChartGroup = (Excel.ChartGroup)m_objChart.ChartGroups(1);

        m_objSeries = (Excel.Series)m_objChartGroup.SeriesCollection(1);

                               

        m_objSeries.Values = 456;

        m_objExcel.DisplayAlerts = false;

 

        m_objBook.SaveAs("z:\\Book2.xls", m_objOpt, m_objOpt,

                                        m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,

                                m_objOpt, m_objOpt, m_objOpt, m_objOpt);

 

                        }

catch (Exception ex)

{

        MessageBox.Show(ex.Message);

}

finally

{

        m_objBook.Close(m_objOpt, m_objOpt, m_objOpt);

        m_objExcel.Workbooks.Close();

 

        m_objExcel.Quit();

                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);

                                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);

        m_objBook = null;

        m_objExcel = null;

        GC.Collect();

        this.Close();

}

源Excel文件中的统计图:

经过代码处理后保存的统计图:

Feedback

#1楼    回复  引用    

2007-01-05 14:45 by 韩 [未注册用户]
Excel.Chart = (Excel.Chart)workSheet.ChartObjects(1);

我引用的是Microsoft Excel 11.0 object, vs 2003里面。我的一个已经存在的Excel里面已经存在一个很复杂的chart图,现在我用上面的语法获取这个chart对象就是不能成功获取。

上面的语法报错说 类型转换不正确。

兄弟,知道为什么吗?

#2楼 [楼主]   回复  引用  查看    

2007-01-05 14:55 by Cure      
你的Chart是放在一个WorkSheet内的吗?还是单独的一个ChartSheet?试试在类型转换的时候用
m_objChart = (Excel._Chart)m_objExcel.Charts.get_Item(1);

#3楼    回复  引用    

2007-02-07 10:42 by sas [未注册用户]
如何让统计图显示在C# 控件中。
我是菜鸟,帮帮忙!!

#4楼 [楼主]   回复  引用  查看    

2007-02-07 11:33 by Cure      
@sas
C#里有个AxWebBrowser控件,可以在winform中用这个控件打开Excel文件

#5楼    回复  引用    

2007-07-30 22:04 by wk [未注册用户]
m_objChart = (Excel._Chart)m_objExcel.Charts.get_Item(1);


按你上面做的总是这句出错????

#6楼    回复  引用    

2007-07-30 22:05 by wk [未注册用户]
无效索引。 (异常来自 HRESULT:0x8002000B (DISP_E_BADINDEX))错误提示~~大哥在线等你啊

#7楼    回复  引用    

2007-07-30 22:06 by wk [未注册用户]
VS2005+offices2003做的

#8楼 [楼主]   回复  引用  查看    

2007-07-31 09:13 by Cure      
@wk
能不能给出你的代码?上面提供的内容不好判断错误

#9楼    回复  引用    

2007-08-03 18:25 by wk [未注册用户]
m_objChart = (Excel._Chart)m_objExcel.Charts.get_Item(1);


能否对内嵌图表操作?

#10楼    回复  引用    

2007-08-03 18:26 by wk [未注册用户]
上楼大哥等你几个星期了`~~....

#11楼    回复  引用  查看    

2008-04-23 20:43 by 留恋星空      
mark

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: