云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C#操作EXCEL,生成图表

C#操作EXCEL,生成图表

  • 62 次阅读
  • 3 次下载
  • 2025/6/25 19:36:15

关于C#操作EXCEL,生成图表的全面应用之一(利用Microsoft.Office.Interop.Excel)

2008-09-19 10:124893人阅读评论(14)收藏举报

近来我在开发一个运用C#生成EXCEL文档的程序,其中要根据数据生成相应的图表,该图表对颜色和格式都有严格的要求,在百度和谷歌中搜索了所有的相关信息,只有部分介绍,具体格式的介绍没有,经过我不断的实践和探索,终于完成了这项艰巨的任务。

有两种实现方式,一种是利用OWC11组件完成,一种运用Excel完成!

运用OWC11的完成,适合生成一个图形文件,之后不能不在文件中编辑;运用Excel则更适合利用EXCEL文件中的数据直接在文件中加入图表,方便以后编辑!两种我都尝试了,由于我更适合于使用第二种,所以我开发的较完善。在这里公布源码供大家参考使用! 开发者:Gailzhao

EMail:gailzhao@sohu.com

说明,在窗口,添加一个按钮,名称为Btn,我只写代码部分(我的数据中是日期对应的两种数据,如下表)

在EXCEL文档中生成如下数据(部分),在数据右侧根据数据生成图表

基金净值指数图表 日期 2008-1-2 2008-1-3 2008-1-4 2008-1-7 2008-1-8 添加以下引用: using System.IO; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; private void Btn_Click(object sender, EventArgs e) { //创建一个EXCEL文档 CreateExcel(\标题\文档.XLS\工作表名\ } private void CreateExcel(string title, string fileName, string sheetNames) { //待生成的文件名称 string FileName = fileName; 开放式基金 4236.9944 4246.8861 4277.9334 4325.5252 4306.3272 偏股型基金 5158.0456 5172.5288 5214.2867 5276.8432 5252.3962 string FilePath = strCurrentPath + FileName; FileInfo fi = new FileInfo(FilePath);

if (fi.Exists) //判断文件是否已经存在,如果存在就删除! {

fi.Delete(); }

if (sheetNames != null && sheetNames != \ {

Excel.Application m_Excel = new Excel.Application();//创建一个Excel对象(同时启动EXCEL.EXE进程)

m_Excel.SheetsInNewWorkbook = 1;//工作表的个数 Excel._Workbook m_Book =

(Excel._Workbook)(m_Excel.Workbooks.Add(Missing.Value));//添加新工作簿 Excel._Worksheet m_Sheet;

#region 处理

DataSet ds= ScData.ListData(\int.Parse(fdate));

if (ds.Tables.Count<= 0) {

MessageBox.Show(\没有最新数据!\ return; }

DataTableToSheet(title, ds.Tables[0], m_Sheet, m_Book, 0); #endregion

#region 保存Excel,清除进程

m_Book.SaveAs(FilePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

//m_Excel.ActiveWorkbook._SaveAs(FilePath, Excel.XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null); m_Book.Close(false, Missing.Value, Missing.Value); m_Excel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(m_Book); System.Runtime.InteropServices.Marshal.ReleaseComObject(m_Excel); m_Book = null; m_Sheet = null; m_Excel = null; GC.Collect();

//this.Close();//关闭窗体 #endregion } }

#region 将DataTable中的数据写到Excel的指定Sheet中 ///

/// 将DataTable中的数据写到Excel的指定Sheet中 ///

///

public void DataTableToSheet(string title, DataTable dt, Excel._Worksheet m_Sheet, Excel._Workbook m_Book, int startrow) {

//以下是填写EXCEL中数据

Excel.Range range = m_Sheet.get_Range(m_Sheet.Cells[1, 1], m_Sheet.Cells[1, 2]); range.MergeCells = true; //合并单元格 range.Font.Bold = true; //加粗单元格内字符 //写入题目

m_Sheet.Cells[startrow, startrow] = title; int rownum = dt.Rows.Count;//行数 int columnnum = dt.Columns.Count;//列数 int num = rownum + 2; //得到数据中的最大行数

//写入列标题

for (int j = 0; j < columnnum; j++) {

int bt_startrow = startrow + 1; //将字段名写入文档

m_Sheet.Cells[bt_startrow, 1 + j] = dt.Columns[j].ColumnName; //单元格内背景色

m_Sheet.get_Range(m_Sheet.Cells[bt_startrow, 1 + j], m_Sheet.Cells[bt_startrow, 1 + j]).Interior.ColorIndex = 15; }

//逐行写入数据

for (int i = 0; i < rownum; i++) {

for (int j = 0; j < columnnum; j++) {

m_Sheet.Cells[startrow + 2 + i, 1 + j] = dt.Rows[i][j].ToString(); } }

m_Sheet.Columns.AutoFit();

//在当前工作表中根据数据生成图表 CreateChart(m_Book, m_Sheet, num); }

private void CreateChart(Excel._Workbook m_Book,Excel._Worksheet m_Sheet,int num) {

Excel.Range oResizeRange;

Excel.Series oSeries;

m_Book.Charts.Add(Missing.Value, Missing.Value, 1, Missing.Value); m_Book.ActiveChart.ChartType = Excel.XlChartType.xlLine;//设置图形 //设置数据取值范围

m_Book.ActiveChart.SetSourceData(m_Sheet.get_Range(\Excel.XlRowCol.xlColumns);

//m_Book.ActiveChart.Location(Excel.XlChartLocation.xlLocationAutomatic, title); //以下是给图表放在指定位置

m_Book.ActiveChart.Location(Excel.XlChartLocation.xlLocationAsObject, m_Sheet.Name);

oResizeRange = (Excel.Range)m_Sheet.Rows.get_Item(10, Missing.Value);

m_Sheet.Shapes.Item(\调图表的位置上边距

oResizeRange = (Excel.Range)m_Sheet.Columns.get_Item(6, Missing.Value); //调图表的位置左边距

// m_Sheet.Shapes.Item(\ m_Sheet.Shapes.Item(\调图表的宽度 m_Sheet.Shapes.Item(\调图表的高度

m_Book.ActiveChart.PlotArea.Interior.ColorIndex = 19; //设置绘图区的背景色 m_Book.ActiveChart.PlotArea.Border.LineStyle = Excel.XlLineStyle.xlLineStyleNone;//设置绘图区边框线条

m_Book.ActiveChart.PlotArea.Width = 400; //设置绘图区宽度

//m_Book.ActiveChart.ChartArea.Interior.ColorIndex = 10; //设置整个图表的背影颜色 //m_Book.ActiveChart.ChartArea.Border.ColorIndex = 8;// 设置整个图表的边框颜色 m_Book.ActiveChart.ChartArea.Border.LineStyle = Excel.XlLineStyle.xlLineStyleNone;//设置边框线条 m_Book.ActiveChart.HasDataTable = false;

//设置Legend图例的位置和格式

m_Book.ActiveChart.Legend.Top = 20.00; //具体设置图例的上边距 m_Book.ActiveChart.Legend.Left = 60.00;//具体设置图例的左边距 m_Book.ActiveChart.Legend.Interior.ColorIndex = Excel.XlColorIndex.xlColorIndexNone;

m_Book.ActiveChart.Legend.Width = 150; m_Book.ActiveChart.Legend.Font.Size = 9.5; //m_Book.ActiveChart.Legend.Font.Bold = true; m_Book.ActiveChart.Legend.Font.Name = \宋体\ //m_Book.ActiveChart.Legend.Position =

Excel.XlLegendPosition.xlLegendPositionTop;//设置图例的位置

m_Book.ActiveChart.Legend.Border.LineStyle = Excel.XlLineStyle.xlLineStyleNone;//设置图例边框线条

//设置X轴的显示

Excel.Axis xAxis = (Excel.Axis)m_Book.ActiveChart.Axes(Excel.XlAxisType.xlValue,

搜索更多关于: C#操作EXCEL,生成图表 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

关于C#操作EXCEL,生成图表的全面应用之一(利用Microsoft.Office.Interop.Excel) 2008-09-19 10:124893人阅读评论(14)收藏举报 近来我在开发一个运用C#生成EXCEL文档的程序,其中要根据数据生成相应的图表,该图表对颜色和格式都有严格的要求,在百度和谷歌中搜索了所有的相关信息,只有部分介绍,具体格式的介绍没有,经过我不断的实践和探索,终于完成了这项艰巨的任务。 有两种实现方式,一种是利用OWC11组件完成,一种运用Excel完成! 运用OWC11的完成,适合生成一个图形文件,之后不能不在文件中编辑;运用Excel则更适合利用EXCEL文件中的数据直接在文件中加入图表,方便以后编辑!两种我都尝试了,由于我更适合于使用第二种,所以我开发的较

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com