Excel Chart

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;
            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("exec Vote_2008.dbo.P_VoteResult_Update " + 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中
        /// <summary>
        /// 将DataTable中的数据写到Excel的指定Sheet中
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="m_Sheet"></param>
        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("A2", "C" + num.ToString()), 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("Chart 1").Top = (float)(double)oResizeRange.Top;  //调图表的位置上边距
            oResizeRange = (Excel.Range)m_Sheet.Columns.get_Item(6, Missing.Value);  //调图表的位置左边距
           // m_Sheet.Shapes.Item("Chart 1").Left = (float)(double)oResizeRange.Left;
            m_Sheet.Shapes.Item("Chart 1").Width = 400;   //调图表的宽度
            m_Sheet.Shapes.Item("Chart 1").Height = 250;  //调图表的高度

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, Excel.XlAxisGroup.xlPrimary);
            xAxis.MajorGridlines.Border.LineStyle = Excel.XlLineStyle.xlDot;
            xAxis.MajorGridlines.Border.ColorIndex = 1;//gridLine横向线条的颜色
            xAxis.HasTitle = false;
            xAxis.MinimumScale = 1500;
            xAxis.MaximumScale = 6000;
            xAxis.TickLabels.Font.Name = "宋体";
            xAxis.TickLabels.Font.Size = 9;

//设置Y轴的显示
            Excel.Axis yAxis = (Excel.Axis)m_Book.ActiveChart.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary);
            yAxis.TickLabelSpacing = 30;
            yAxis.TickLabels.NumberFormat = "M月D日";
            yAxis.TickLabels.Orientation = Excel.XlTickLabelOrientation.xlTickLabelOrientationHorizontal;//Y轴显示的方向,是水平还是垂直等
            yAxis.TickLabels.Font.Size = 8;
            yAxis.TickLabels.Font.Name = "宋体";

//m_Book.ActiveChart.Floor.Interior.ColorIndex = 8;

oSeries = (Excel.Series)m_Book.ActiveChart.SeriesCollection(1);
            oSeries.Border.ColorIndex = 45;
            oSeries.Border.Weight = Excel.XlBorderWeight.xlThick;
            oSeries = (Excel.Series)m_Book.ActiveChart.SeriesCollection(2);
            oSeries.Border.ColorIndex = 9;
            oSeries.Border.Weight = Excel.XlBorderWeight.xlThick;

}

时间: 12-10

Excel Chart的相关文章

3.5 用NPOI操作EXCEL--巧妙使用Excel Chart

在NPOI中,本身并不支持Chart等高级对象的创建,但通过l模板的方式可以巧妙地利用Excel强大的透视和图表功能,请看以下例子. 首先建立模板文件,定义两列以及指向此区域的名称“sales”: 创建数据表,数据来源填入刚才定义的区域: 最后生成的数据透视表所在Sheet的样式如下: 至此,模板已经建好,另存为“D:\MyProject\NPOIDemo\Chart\Book2.xls”.我们发现,模板就相当于一个“空架 子”,仅仅有操作方式没并没有任何数据.下一步,我们往这个“空架子”中填入

html5表单上传控件Files筛选指定格式的文件:accept属性过滤excel文件

摘自:http://blog.csdn.net/jyy_12/article/details/9851349 (IE9及以下不支持下面这些功能,其它浏览器最新版本均已支持.) 1.允许上传文件数量 允许选择多个文件:<input type="file" multiple> 只允许上传一个文件:<input  type="file" single> 2.上传指定的文件格式 <input type="file" acce

C# 对Excel操作与分析

今天帮现在饿公司写个工具,要动态读excel上的ip地址与端口号,来更改IE的代理地址,由于好久没写Excel的操作了,只能查阅以前的项目,总结一下: 首先我们要引用我们的com接口的excelMicrosoft.Office.Interop.Excel.Application excel对象表示 Excel 应用程序本身.Application 对象公开了大量有关正在运行的应用程序.应用于该实例的选项以及在该实例中打开的当前用户的对象的信息. 注意:我们不能将Excel 中 Applicati

C# API: 生成和读取Excel文件

我们想为用户提供一些数据,考虑再三, 大家认为对于用户(人,而非机器)的可读性, Excel文件要好一些. 因为相比csv,xml等文件, Excel中我们可以运用自动筛选, 窗口锁定, 还可以控制背景颜色, 前景颜色, 字体, 网格等等... 业务逻辑并不复杂, 文件的内容和格式也比较固定,所以大家决定直接拿C#去创建这些文件. 于是一搜索,首先来到了这个链接:C# Excel Tutorial 里面包含了下面这些主题的代码示例, 示例很详细, 编译可直接运行. How to create E

VSTO:使用C#开发Excel、Word【14】

操作workbooks集合可从Application对象的Workbooks属性中获取的Workbooks集合包含当前在应用程序中打开的Workbook对象的集合. 它还具有用于管理开放工作簿,创建新工作簿以及打开现有工作簿文件的方法. 迭代开放式工作簿集合实现一个称为GetEnumerator的特殊方法,允许它们被迭代. 您不必直接调用GetEnumerator方法,因为C#中的foreach关键字使用此方法遍历一组工作簿. 有关使用foreach的示例,请参见清单5-8. 清单5-8  使用

iozone文件系统测试 与EXCEL 制图

http://www.iozone.org/[[email protected] bin]# ./iozone -a -s 512m -f /usr/test -y 512 -q 16384 -Rb /root.out -i 1 -i 2 -i 0 Iozone: Performance Test of File I/O Version $Revision: 3.434 $ Compiled for 32 bit mode. Build: linux Contributors:William N

VSTO:使用C#开发Excel、Word【12】

Excel对象模型中的事件了解excel对象模型中的事件至关重要,因为这通常是代码运行的主要方式.本章将检查Excel对象模型中的所有事件,引发事件以及可能与这些事件关联的代码类型. Excel对象模型中的许多事件在应用程序,工作簿和工作表对象上重复.此重复允许您决定是否要处理所有工作簿,特定工作簿或特定工作表的事件.例如,如果您想知道任何打开的工作簿中的任何工作表是否双击,您将处理Application对象的SheetBeforeDoubleClick事件.如果您想知道在特定工作簿中的任何工作

【C#】14. printOneExcel在Excel里作图 &amp; 利率插值计算(线性)

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">今天主要写写怎么用Visual Studio在Excel里面做图(chart),网上有很多人都讨论过这个问题,但我觉得这里还是写一下C# for financial markets里面怎么写的,因为我觉得这个做出来的比较好.</span> 首先看一下chart在excel里面

转载:使用Python一键生成Oracle性能excel曲线图

文章转自:http://www.shsnc.cn/show-109-970-1.html 进一步具体可参考:http://xlsxwriter.readthedocs.io/tutorial01.html 1.为什么要生成曲线图 做oracle数据库运维,有时会经常要看一周内数据库运行的情况,而通过性能曲线图最能展现数据库系统的性能变化情况了.如果有安装oracle的EM,看这个也不是问题.但有些数据库是没安装的,而且EM的是较难以实现定制化的报表需求的,难以把图表发给用户. 先来看一下要生成的