using System;
using Microsoft.Office.Interop.Excel;
namespace ExcelChart_TEST
{
class ExcelTest
{
public void CreateExcel()
{
//待生成的文件名称
string FileName = “test.xlsx”;
string FilePath = System.AppDomain.CurrentDomain.BaseDirectory+FileName;
Application excel = new Application();
Workbook wBook = excel.Workbooks.Open(FilePath);
excel.Visible = true;
Worksheet wSheet1 = wBook.Worksheets[1] as Worksheet;
int rows = wSheet1.UsedRange.Rows.Count;//获取sheet中已使用的行数
int columns=wSheet1.UsedRange.Columns.Count;//获取sheet中已使用的列数
CreateChart(wBook, wSheet1, rows, columns);
#region 保存Excel,清除进程
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;
wBook.SaveAs(System.AppDomain.CurrentDomain.BaseDirectory + “testchart.xlsx”, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, false, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
excel = null;
wBook = null;
GC.Collect();
#endregion
}
private void CreateChart(Workbook m_Book, Worksheet m_Sheet, int rows,int columns)
{
Series oSeries;
Chart oChart;
oChart = m_Book.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
oChart.ChartType = XlChartType.xlColumnClustered;//柱状图
//Range cellrange = m_Sheet.get_Range((Range)m_Sheet.Cells[3, 3], (Range)m_Sheet.Cells[num, 3]);
oChart.SetSourceData((Range)m_Sheet.get_Range("C2:C" + rows.ToString()), Type.Missing);//Y轴取值范围
oSeries = (Series)oChart.SeriesCollection(1);
oSeries.XValues = m_Sheet.get_Range("A2", "A" + rows.ToString());//x轴取值范围
oChart.HasTitle = true;//设置标题
oChart.ChartTitle.Text = "Title TEST";
Axis yAxis = (Axis)oChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary);
yAxis.HasTitle = true;
yAxis.AxisTitle.Text = "yield";//y轴有标题
Axis xAxis = (Axis)oChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
xAxis.HasTitle = true;
xAxis.AxisTitle.Text = "date";//x轴标题
oChart.Location(XlChartLocation.xlLocationAsObject, m_Sheet.Name);//将图表放在指定sheet里
Range oResizeRange = (Range)m_Sheet.Columns.get_Item(columns+2, Type.Missing);
m_Sheet.Shapes.Item("Chart 1").Left = (float)(double)oResizeRange.Left;//调图表的位置左边距
}
}
}
ChartType属性
柱形图 簇状 xlColumnClustered
三维簇状柱形图 xl3DColumnClustered
堆积柱形图 xlColumnStacked
三维堆积柱形图 xl3DColumnStacked
百分比堆积柱形图 xlColumnStacked100
三维百分比堆积柱形图 xl3DColumnStacked100
三维柱形图 xl3DColumn簇状
条形图 簇状条形图 xlBarClustered
三维簇状条形图 xl3DBarClustered
堆积条形图 xlBarStacked
三维堆积条形图 xl3DBarStacked
百分比堆积条形图 xlBarStacked100
三维百分比堆积条形图 xl3DBarStacked100
折线图 折线图 xlLine
数据点折线图 xlLineMarkers
堆积折线图 xlLineStacked
堆积数据点折线图 xlLineMarkersStacked
百分比堆积折线图 xlLineStacked100
百分比堆积数据点折线图 xlLIneMarkersStacked100
折线图三维折线图 xl3DLine
饼图 饼图 xlPie
分离型饼图 xlPieExploded
三维饼图 xl3Dpie
三维分离型饼图 xl3DPieExploded
复合饼图 xlPieOfPie
饼图复合柱饼图 xlBarOfPie
XY (散点图) 散点图 xlXYScatter
平滑线散点图 xlXYScatterSmooth
无数据点折线散点图 xlXYScatterLinesNoMarkers
折线散点图 xlXYScatterLines
无数据点折线散点图 xlXYScatterLinesNoMarkers
气泡图 气泡图 xlBubble
三维气泡图 xlBubble3DEffect
面积图 面积图 xlArea
三维面积图 xl3DArea
堆积面积图 xlAreaStacked
三维堆积面积图 xl3DAreaStacked
百分比堆积面积图 xlAreaStacked100
三维百分比堆积面积图 xl3DAreaStacked100
圆环图 圆环图 xlDoughnut
分离型圆环图 xlDoughnutExploded
雷达图 雷达图 xlRadar
数据点雷达图 xlRadarMarkers
填充雷达图 xlRadarFilled
曲面图 三维曲面图 xlSurface
曲面图(俯视图) xlSurfaceTopView
三维曲面图(框架图) xlSurfaceWireframe
曲面图(俯视框架图) xlSurfaceTopViewWireframe
股价图 盘高-盘低-收盘图 xlStockHLC
成交量-盘高-盘低-收盘图 xlStockVHLC
开盘-盘高-盘低-收盘图 xlStockOHLC
成交量-开盘-盘高-盘低-收盘图 xlStockVOHLC
圆柱图 簇状柱形圆柱图 xlCylinderColClustered
簇状条形圆柱图 xlCylinderBarClustered
堆积柱形圆柱图 xlCylinderColStacked
堆积条形圆柱图 xlCylinderBarStacked
百分比堆积柱形圆柱图 xlCylinderColStacked100
百分比堆积条形圆柱图 xlCylinderBarStacked100
三维柱形圆柱图 xlCylinderCol
圆锥图 簇状柱形圆锥图 xlConeColClustered
簇状条形圆锥图 xlConeBarClustered
堆积柱形圆锥图 xlConeColStacked
堆积条形圆锥图 xlConeBarStacked
百分比堆积柱形圆锥图 xlConeColStacked100
百分比堆积条形圆锥图 xlConeBarStacked100
三维柱形圆锥图 xlConeCol
棱锥图 簇状柱形棱锥图 xlPyramidColClustered
簇状条形棱锥图 xlPyramidBarClustered
堆积柱形棱锥图 xlPyramidColStacked
堆积条形棱锥图 xlPyramidBarStacked
百分比堆积柱形棱锥图 xlPyramidColStacked100
百分比堆积条形棱锥图 xlPyramidBarStacked100
三维柱形棱锥图 xlPyramidCol