我要做一个c# 操作Excel 图表并设置图表的格式,现在问题就是,我做出来的图表 不是和数据放在同一个sheet里,是自动生成一个叫Char的图表sheet,怎么样合并到一个sheet里,还有就是图表里的bar(即每个柱状图下面的名称)不会全部显示,只显示 1.3.5.7.....,怎么样让全部都显示(名称是数据库里的,不可以修改),谢谢大家,请大家给的详细一点,最好是源码,急用。
1.插入图表则主要是操作ChartObject对象和Chart对象。
Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);
Worksheet ws = (Worksheet)xla.ActiveSheet;
// Now create the chart.
ChartObjects charts= (ChartObjects)ws.ChartObjects(Type.Missing);
//设置图表大小。ChartObject chartObj = charts.Add(0, 0, 400, 300);Chart chart = chartObj.Chart;//设置图表数据区域。Range range = workSheet.get_Range("A1", "E10");chart.ChartWizard(range, XlChartType.xl3DColumn,miss,XlRowCol.xlColumns, 1, 1, true, "标题", "X轴标题", "Y轴标题", miss);
//将图表移到数据区域之下。chartObj.Left = Convert.ToDouble(range.Left);chartObj.Top = Convert.ToDouble(range.Top) + Convert.ToDouble(range.Height);
2.其中设置图表区域比较关键,区域中包含了标题行。ChartWizard的第二个参数指明了图表的类型,第四个参数指明了以行还是列的值作为一个数据系列,第五个参数和第六个参数则指明分别作为横轴坐标和系列名称的单元格。
3.以Line类型图表为例,数据如下:
4.那么根据第四个参数的不同会有两种不同图表:
chart.ChartWizard(range, XlChartType.xlLine,miss,XlRowCol.xlRows, 1, 1, true, "标题", "X轴标题", "Y轴标题", miss);
5.在PlotBy Row的时候,会以一行的数据为一个数据系列画一条线,并把第每行的一列值作为这一条线的标题,而把第一行的每一列作为该线的横坐标。
chart.ChartWizard(range, XlChartType.xlLine,miss,XlRowCol.xlColumns, 1, 1, true, "标题", "X轴标题", "Y轴标题", miss);
6.在PlotBy Column的时候,会以一列的数据为一个数据系列画一条线,并把第每列的一行值作为这一条线的标题,而把第一列的每一行作为该线的横坐标。
这两种模式相同点就在于,它们都是以坐标格内的值作为纵坐标的。这里需要注意的是,如果第五和第六个参数改为2,并不是取行的第二列或列的第二行作为标题,而是取前两行或前两列,比如:
chart.ChartWizard(range, XlChartType.xlLine,miss,XlRowCol.xlColumns, 2, 0, true, "标题", "X轴标题", "Y轴标题", miss);
7.由于系列标题设置为0,所以使用了默认的“系列X”作为标题,而横坐标则取了每列的前两行,所以共有三条线,每条线上10个点。