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;

}

转载于:https://www.cnblogs.com/zpcB/p/5040347.html

Excel Chart相关推荐

  1. VB封装excel chart

    Dim obj Set obj = createObject("ChinaaspChart.pie") obj.AddValue "男", 150 obj.Ad ...

  2. Python之Excel图片处理(将excel chart另存为图片)

    Python之Excel chart另存为图片 大家好,好久没有更新博客了,这一段时间有点忙,公司接触到了大量的excel文件处理,现将自己在工作中积累的经验分享大家,供大家参考学习. 业务说明:这段 ...

  3. C#对Excel的一些操作【一】

    C#操作Excel的方式多种多样,以下为个人实践中的一些总结,留个笔记方便以后查看,陆续更新中... 进入正题: 一:将Excel的数据直接导入到SQL数据库中 这个需要Excel文件与数据库中的表的 ...

  4. Excel develop

    Chart.Export 方法 http://msdn2.microsoft.com/zh-CN/library/microsoft.office.tools.excel.chart.export.a ...

  5. 如何使用自动化与分析工具库创建 Excel 直方图

    本文提供了一个 Visual Basic 项目示例,该示例演示了如何使用分析工具库 (ATP) 生成直方图.本文还介绍了一些基本技术,使用这些技术可以实现并使用分析工具库外接程序库,以及具有自动化功能 ...

  6. 如何真正实现无提示保存Excel文档

    要想取消Excel文档的保存提示,从而实现文档的自动保存,应该从两个方面加以考虑,一是设置ThisWorkBook.Saved属性,当此属性为True时,Excel会认为该文档已被保存过,因此不会弹出 ...

  7. vb如何用代码对Excel的指定区域实行保护

    有时,我们为了保证数据的准确性,需要在对Excel工作表的指定区域进行保护,以达到禁止用户修改的目的,那么,如何用代码直接实现呢? 为此,我编写了一个简单的函数供大家调用,虽然该函数是用VBA写的,其 ...

  8. 如何用VB实现Excel文件的自动合并

    闲来无事,编写了一个简单而实用的合并Excel文件的函数,能够将多个XLS文件中指定数量的工作表自动合并到一个XLS文件里.当然,如果只是数据合并,则使用ADO就可以实现,但如果要保留表格格式,则恐怕 ...

  9. vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中

    本来从MSFlexGrid或MSHFlexGrid导出数据到Excel中,是一个非常简单的问题,但论坛里还是经常有人问如何导出,有的虽然知道用单元格赋值方式循环导出,但速度太慢,因此写了一个通用的数据 ...

最新文章

  1. Codeforces Gym100812 L. Knights without Fear and Reproach-扩展欧几里得(exgcd)
  2. 陆奇激动地对世界说,百度就是中国的谷歌
  3. B2B2C多用户商城就等于零售吗?什么是新零售?新零售有哪些特点?
  4. tomcat上传war包失败
  5. Qomolangma实现篇(四):基本特性增强与多投事件系统
  6. 建造者模式 设计模式 Java实现 创建型
  7. t-sql还原数据库_如何更新T-SQL工具箱数据库
  8. 电路——三极管(一)辨认极性和判断类型(原理图中)
  9. 重命名DC 以及 域
  10. fotify php审计,Fortify下载-代码审计工具Fortify SCA下载v20.1.1 最新版-西西软件下载...
  11. 腾讯火力全开“吃鸡”:下一个游戏行业风口怎能错过?
  12. 解决努比亚 Z11 mini S 刷机导致 wifi 蓝牙失效的办法
  13. Docker--一门值得你学习的手艺
  14. vscode工作区是什么意思_VS Code中的“工作区”是什么?
  15. 从零开始的泡泡龙游戏
  16. java pgm_用Java读取pgm文件
  17. SystemUI之通知图标控制
  18. 通信教程 | 概述并行与串行通信的区别
  19. 深度学习英文缩写_深度学习相关专业词汇简称汇总
  20. filter(matlab2C)

热门文章

  1. 任务和特权级保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记27
  2. jvm垃圾收集器的发展史及回收算法
  3. 动态规划和贪心算法的区别
  4. 逻辑回归的总结(详细步骤)
  5. gRPC amp; Protocol Buffer 构建高性能接口实践
  6. DeepMind将博弈论融入多智能体研究,让纳什均衡变得更简单
  7. Go 从入门到精通(三)字符串,时间,流程控制,函数
  8. LSTM implementation explained
  9. 无需Root也能Hook?——Depoxsed框架演示
  10. 管家病毒查杀模块逆向分析