DataSet To Excel&Chart
来源:互联网 发布:逆战检测到数据异常 编辑:程序博客网 时间:2024/05/10 19:26
using System;
using System.Drawing;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;
using System.Reflection;
namespace ExcelOperator
{
/// <summary>
/// For Excel Operation
/// </summary>
public class ExcelObject
{
public static bool DoExcelOperator(string fileName)
{
//Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
//Excel.Workbooks wbs = excel.Workbooks.Open(fileName, Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
//Excel.QueryTables m_objQryTables = null;
//Excel.QueryTable m_objQryTable = null;
Excel.Application m_objExcel = null;
Excel.Workbooks m_objBooks = null;
Excel.Workbook m_objBook = null;
Excel.Sheets m_objSheets = null;
Excel.Worksheet m_objSheet = null;
Excel.Range m_objRange = null;
try
{
m_objExcel = new Excel.Application();
m_objExcel.Visible = false;
m_objExcel.DisplayAlerts = false;
m_objBooks = m_objExcel.Workbooks;
m_objBooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
m_objBook = (Excel.Workbook)m_objBooks.get_Item(1);
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
for (int i = 1; i <= m_objSheets.Count; i++)
{
try
{
m_objSheet = (Excel.Worksheet)m_objSheets.get_Item(i);
m_objSheet.Cells.Columns.AutoFit();
m_objSheet.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 255, 255).ToArgb();
//m_objSheet.Cells.Columns.Cells.AutoFit();
m_objRange = m_objSheet.get_Range("A1", "D1");
m_objRange.Font.Color = System.Drawing.Color.FromArgb(255, 255, 255).ToArgb();
m_objRange.Font.Size = 10;
m_objRange.Borders.LineStyle = Excel.Constants.xlSolid;
m_objRange.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
int n = 1;
while (m_objSheet.get_Range("A" + (++n).ToString(), Type.Missing).Text.ToString() != "") ;
m_objRange = m_objSheet.get_Range("A2", "D" + n.ToString());
m_objRange.Borders.Weight = 4;
m_objRange.Borders.LineStyle = 3;
m_objRange.NumberFormat = "0.00";
m_objRange.HorizontalAlignment = Excel.Constants.xlCenter;
for (int j = 2; j < n; j++)
{
m_objSheet.Cells[j, 2] = m_objSheet.get_Range("B" + j.ToString(), Type.Missing).Text.ToString();
}
}
catch (Exception ex)
{
m_objSheet.Cells[1, 20] = ex.ToString();
}
}
//m_objQryTables = m_objSheet.QueryTables;
//string sqlstr = "SELECT [day01],[day02],[day03],[day04],[day05],[day06],[day07],[day08],[day09],[day10],[day11],[day12],[day13],[day14]";
//sqlstr += ",[week01] ,[week02],[week03],[week04],[week05],[week06],[week07],[week08],[week09],[week10],[week11],[week12],[week13],[week14]";
//sqlstr += ",[week15],[week16],[week17],[week18],[week19],[week20],[week21],[week22],[week23],[week24]";
//sqlstr += " FROM [GDS_Service].[dbo].[GDS_Service_Report_Base] order by groupID ,id";
////¿ÉÒÔ·ÅÔÚÅäÖÃÎļþÀï34
//string conn = @"Provider=SQLOLEDB.1;Data Source=MININT-G87PHNA/SQLEXPRESS;uid=xijun_ke;Password=12345678; Initial Catalog=GDS_Service;Persist Security Info=False;";
//m_objQryTable = (Excel.QueryTable)m_objQryTables.Add("OLEDB;" + conn, m_objRange, sqlstr);
//m_objQryTable.RefreshStyle = Excel.XlCellInsertionMode.xlInsertEntireRows;
//m_objQryTable.Refresh(false);
m_objBook.RefreshAll();
m_objBook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
m_objBook.Close(false, Type.Missing, Type.Missing);
m_objExcel.Quit();
GC.Collect();
}
catch (Exception ex)
{
m_objBook.RefreshAll();
m_objBook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
m_objBook.Close(false, Type.Missing, Type.Missing);
m_objExcel.Quit();
GC.Collect();
return false;
}
return true;
}
public static bool DoExcelOperator_1(string fileName)
{
//Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
//Excel.Workbooks wbs = excel.Workbooks.Open(fileName, Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
//Excel.QueryTables m_objQryTables = null;
//Excel.QueryTable m_objQryTable = null;
Excel.Application m_objExcel = null;
Excel.Workbooks m_objBooks = null;
Excel.Workbook m_objBook = null;
Excel.Sheets m_objSheets = null;
Excel.Worksheet m_objSheet = null;
Excel.Range m_objRange = null;
try
{
m_objExcel = new Excel.Application();
m_objExcel.Visible = false;
m_objExcel.DisplayAlerts = false;
m_objBooks = m_objExcel.Workbooks;
m_objBooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
m_objBook = (Excel.Workbook)m_objBooks.get_Item(1);
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
for (int i = 1; i <= m_objSheets.Count; i++)
{
m_objSheet = (Excel.Worksheet)m_objSheets.get_Item(i);
m_objSheet.Cells.Columns.AutoFit();
m_objSheet.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 255, 255).ToArgb();
//m_objSheet.Cells.Columns.Cells.AutoFit();
m_objRange = m_objSheet.get_Range("A1", "D1");
m_objRange.Font.Color = System.Drawing.Color.FromArgb(255, 255, 255).ToArgb();
m_objRange.Font.Size = 10;
m_objRange.Borders.LineStyle = Excel.Constants.xlSolid;
m_objRange.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
int n = 1;
while (m_objSheet.get_Range("A" + (++n).ToString(), Type.Missing).Text.ToString() != "") ;
m_objRange = m_objSheet.get_Range("A2", "D" + n.ToString());
m_objRange.Borders.Weight = 4;
m_objRange.Borders.LineStyle = 3;
m_objRange.NumberFormat = "0";
m_objRange.HorizontalAlignment = Excel.Constants.xlCenter;
for (int j = 2; j < n; j++)
{
m_objSheet.Cells[j, 2] = m_objSheet.get_Range("B" + j.ToString(), Type.Missing).Text.ToString();
}
SetChartValue(m_objBook, m_objSheet, n - 1);
}
//m_objQryTables = m_objSheet.QueryTables;
//string sqlstr = "SELECT [day01],[day02],[day03],[day04],[day05],[day06],[day07],[day08],[day09],[day10],[day11],[day12],[day13],[day14]";
//sqlstr += ",[week01] ,[week02],[week03],[week04],[week05],[week06],[week07],[week08],[week09],[week10],[week11],[week12],[week13],[week14]";
//sqlstr += ",[week15],[week16],[week17],[week18],[week19],[week20],[week21],[week22],[week23],[week24]";
//sqlstr += " FROM [GDS_Service].[dbo].[GDS_Service_Report_Base] order by groupID ,id";
////¿ÉÒÔ·ÅÔÚÅäÖÃÎļþÀï34
//string conn = @"Provider=SQLOLEDB.1;Data Source=MININT-G87PHNA/SQLEXPRESS;uid=xijun_ke;Password=12345678; Initial Catalog=GDS_Service;Persist Security Info=False;";
//m_objQryTable = (Excel.QueryTable)m_objQryTables.Add("OLEDB;" + conn, m_objRange, sqlstr);
//m_objQryTable.RefreshStyle = Excel.XlCellInsertionMode.xlInsertEntireRows;
//m_objQryTable.Refresh(false);
m_objBook.RefreshAll();
m_objBook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
m_objBook.Close(false, Type.Missing, Type.Missing);
m_objExcel.Quit();
GC.Collect();
}
catch (Exception ex)
{
m_objBook.Close(false, Type.Missing, Type.Missing);
m_objExcel.Quit();
GC.Collect();
return false;
}
return true;
}
/// <summary>
/// Constract data from special Cell
/// </summary>
/// <param name="ws"></param>
/// <param name="rowCount"></param>
public static void SetChartValue(Excel.Workbook wbs, Excel.Worksheet ws, int rowCount)
{
try
{
if (rowCount < 2)
{
return;
}
int maxCol = 2;
int startCol = 2;
int startRow = rowCount + 4;
ws.Cells[startRow, 1] = ws.Cells[2, 1];
ws.Cells[startRow, 2] = ws.Cells[2, 2];
for (int i = 3; i <= rowCount; i++)
{
if (ws.get_Range("A" + startRow.ToString(), Type.Missing).Text.Equals(ws.get_Range("A" + i.ToString(), Type.Missing).Text))
{
ws.Cells[startRow, ++startCol] = ws.Cells[i, 2];
if (startCol > maxCol)
{
maxCol = startCol;
}
}
else
{
++startRow;
startCol = 2;
ws.Cells[startRow, 1] = ws.Cells[i, 1];
ws.Cells[startRow, startCol] = ws.Cells[i, 2];
}
}
for (int j = 1; j < maxCol; j++)
{
ws.Cells[rowCount + 3, j + 1] = j.ToString() + " Times";
}
Excel.Range m_objRange = ws.get_Range(ws.Cells[rowCount + 3, 1], ws.Cells[startRow, maxCol]);
m_objRange.Borders.Weight = 4;
m_objRange.Borders.LineStyle = 3;
DrawChart(wbs, ws, m_objRange);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
public static void DrawChart_backup(Excel.Workbook wb, Excel.Worksheet ws, Excel.Range rge)
{
try
{
wb.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wb.ActiveChart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;
wb.ActiveChart.SetSourceData(rge, Excel.XlRowCol.xlRows);
wb.ActiveChart.Location(Microsoft.Office.Interop.Excel.XlChartLocation.xlLocationAutomatic, ws.Name);
wb.ActiveChart.HasTitle = true;
wb.ActiveChart.ChartTitle.Text = "EQP HSMS Connection History";
wb.ActiveChart.HasDataTable = false;
wb.ActiveChart.Refresh();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
public static void DrawChart(Excel.Workbook wb, Excel.Worksheet ws, Excel.Range rge)
{
try
{
// The following code draws the chart
ws.Activate();
rge.Select();
Excel.ChartObjects chartobjects = (Excel.ChartObjects)ws.ChartObjects(Missing.Value);
Excel.ChartObject chartobject = (Excel.ChartObject)chartobjects.Add(double.Parse(rge.Left.ToString()) /*Left*/, double.Parse(rge.Top.ToString()) /*Top*/, 400 /*Width*/, 250 /*Height*/);
Excel._Chart chart = (Excel._Chart)chartobject.Chart;
chart.ChartWizard(rge, Excel.XlChartType.xlLine, Type.Missing, Excel.XlRowCol.xlRows,
1, 1, true, ws.Name + " Line-Chart", "Disconnection times", "HSMS Disconnect Interval", Type.Missing);
Excel.ChartObjects chartobjects1 = (Excel.ChartObjects)ws.ChartObjects(Missing.Value);
double cht2Left = chartobject.Left + chartobject.Width;
Excel.ChartObject chartobject1 = (Excel.ChartObject)chartobjects1.Add(cht2Left /*Left*/, chartobject.Top/*Top*/, 400 /*Width*/, 250 /*Height*/);
Excel._Chart chart1 = (Excel._Chart)chartobject1.Chart;
chart1.ChartWizard(rge, Excel.XlChartType.xl3DColumn, Type.Missing, Excel.XlRowCol.xlRows,
1, 1, true, ws.Name + " Column-Chart", "Disconnection times", "HSMS Disconnect Interval", Type.Missing);
// Call to chart.ChartWizard() is shown using late binding technique solely for the demonstration purposes
//Object[] args7 = new Object[11];
//args7[0] = rge; // Source
//args7[1] = Excel.XlChartType.xlLine; // Gallery
//args7[2] = Missing.Value; // Format
//args7[3] = Excel.XlRowCol.xlRows; // PlotBy
//args7[4] = 0; // CategoryLabels
//args7[5] = 0; // SeriesLabels
//args7[6] = true; // HasLegend
//args7[7] = ws.Name; // Title
//args7[8] = "Sample Category Type"; // CategoryTitle
//args7[9] = "Sample Value Type"; // ValueTitle
//args7[10] = Missing.Value; // ExtraTitle
//chart.GetType().InvokeMember("ChartWizard", BindingFlags.InvokeMethod, null, chart, args7);
//rge.Hidden = true;
//chartobject.Locked = true;
wb.Save();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
}
}
- DataSet To Excel&Chart
- dataset to excel
- Dataset To Excel
- excel to DataSet
- 分页导出Excel DataSet to EXcel
- Excel To Dataset 解决读取丢失数据
- winform C# Export DataSet to Excel
- How to create an Excel sheet or chart in VC?
- How to create an Excel sheet or chart in VC?
- csharp: Export DataSet into Excel and import all the Excel sheets to DataSet
- csharp: Export DataSet into Excel and import all the Excel sheets to DataSet
- Excel Chart的命名
- c# 操作excel chart
- c# excel chart
- Dataset导出到excel
- Excel导入DataSet
- 從DataSet到Excel
- 從DataSet到Excel
- 关于反射和枚举
- 10个你也许不知道的Ubuntu技巧
- 一些机器视觉网站
- 韦文成:WordPress评论插件 让右侧评论更美观
- 互斥类(Cmutex)——MFC
- DataSet To Excel&Chart
- Spring.jar包详解
- 临界区,互斥量,信号量,事件的区别(线程同步)
- jquery.form.js插件中ajaxSubmit提交在jquery1.4版本中的应用
- serv-u 改变端口(远程登录控制台的端口)
- Java的身份证号码工具类
- C#处理Access中的事务
- 近线存储是PACS的首选
- DataSet Vs Exel