Excel生成报表之解决方案---合并图表
2012-10-31 10:28
441 查看
首先看下生成的效果图(即使没有安装Excel也能生成这样的图表)。
其中这个图表中系列有柱状图也有线形图,如何能快速简单生成这样合并图表呢?
下面来看下为生成这样图表要编写的代码:
只要不多的代码就能轻松高效地生成这样复杂的合并图表。
三、总结
无需安装微软Excel,用代码也能很轻松实现单元格格式效果。 下载最新版本到www.aceyoffice.com。如果您想对Acey.ExcelX有进一步了解,在网站下载帮助和Demo。
其中这个图表中系列有柱状图也有线形图,如何能快速简单生成这样合并图表呢?
下面来看下为生成这样图表要编写的代码:
/// <summary> ///这个类型描述如何生成合并的图表。 /// </summary> public void CreateCombinationChart() { //创建一个工作薄对象。 IWorkbook workbook = ExcelxApplication.CreateWorkbook(); //获取工作表集合中指定索引的工作表对象。 IWorksheet worksheet = workbook.Worksheets[0]; //创建DataTable对象。 DataTable dt = new DataTable(); //向DataTable对象中添加列对象。 dt.Columns.Add("Employee Name"); dt.Columns.Add("Salary", typeof(int)); dt.Columns.Add("Other", typeof(int)); dt.Columns.Add("Total", typeof(int)); //为DataTable对象添加多行。 dt.Rows.Add(new object[4] { "Nelson", 40000, 20000, 60000 }); dt.Rows.Add(new object[4] { "Young", 55500, 25000, 80500}); dt.Rows.Add(new object[4] { "Lambert", 25000, 10000, 35000 }); dt.Rows.Add(new object[4] { "Johnson", 25050, 12000, 37050}); dt.Rows.Add(new object[4] { "Lee", 45332, 23000, 68332 }); //导入该DataTable对象的数据到工作表对象中指定的位置。 worksheet.ImportDataTable(dt, true, "A1"); //获取工作表中所有图表对象。 IChartCollection charts = worksheet.Charts; //获取新添加的图表对象(其中指定要添加的图表类型和在工作表中的位置范围)。 IChart chart = charts.Add(ChartType.ColumnStacked100, 0, 4, 17, 12); //创建指定的单元格区域。 IRange range = worksheet.Cells.CreateRange("A1:D6"); //为新创建的图表设置数据源。 chart.SetSourceData(range, RowCol.Columns); //获取图表的区域(包含图表的标题,图例等)。 IChartArea chartAea = chart.ChartArea; //设置该图表区域的字体名称。 chartAea.Font.Name = "Verdana"; //设置该图表区域的字体大小。 chartAea.Font.Size = 11; //获取图表实际的占用的区域。 IPlotArea plotArea = chart.PlotArea; //隐藏该区域的边框线。 plotArea.Border.Visible = false; //设置该区域无填充。 plotArea.Area.Formatting = Acey.ExcelX.Drawing.FormattingType.None; //获取图表的标题。 IChartTitle title = chart.ChartTitle; //设置图表标题显示文本。 title.Text = "Employee Salary"; //设置图表标题的字体是否为粗体。 title.Font.Bold = true; //设置图表标题的字体大小。 title.Font.Size = 12; //获取图表的图例对象。 ILegend legend = chart.Legend; //设置该图例对象的位置。 legend.Position = LegendPositionType.Top; //隐藏该图例的边框线。 legend.Border.Visible = false; //获取图表的Y坐标轴。 IValueAxis valueAxis = chart.ValueAxis; //隐藏图表Y坐标轴的网格线。 valueAxis.MajorGridlines.Visible = false; //设置图表Y坐标轴的主要刻度位置。 valueAxis.MajorTickMark = TickMarkType.Outside; //获取图表的第二Y坐标轴。 valueAxis = chart.SecondValueAxis; //设置图表第二Y坐标轴的主要刻度位置。 valueAxis.MajorTickMark = TickMarkType.Outside; //获取该图表所有系列对象。 ISeriesCollection seriesCollection = chart.SeriesCollection; //获取集合中指定索引处的系列对象。 ISeries series = seriesCollection[0]; //设置该系列对象的填充前景色。 series.Area.ForegroundColor = System.Drawing.Color.Orange; //获取集合中指定索引处的系列对象。 series = seriesCollection[1]; //设置该系列对象的填充前景色。 series.Area.ForegroundColor = System.Drawing.Color.Red; //获取集合中指定索引处的系列对象。 series = seriesCollection[2]; //设置该系列的类型。 series.Type = ChartType.Line; //将该系列平铺在第二Y坐标轴。 series.PlotOnSecondAxis = true; //设置该系列的边框样式。 series.Border.Color = System.Drawing.Color.Yellow; series.Border.Weight = Acey.ExcelX.Drawing.WeightType.WideLine; //获取该系列对象的标记。 IDataLabels dataLabels = series.DataLabels; //表明是否显示值在该标记中。 dataLabels.ShowValue = true; //设置该标记显示。 dataLabels.Border.Visible = true; //设置该标记的填充为自动方式。 dataLabels.Area.Formatting = Acey.ExcelX.Drawing.FormattingType.Automatic; //设置该标记在系列中显示的位置。 dataLabels.Position = LabelPositionType.Center; //为该工作薄保存指定的文件格式。 workbook.SaveAs(@"D:\book.xls", FileFormat.Excel97To2003); }
只要不多的代码就能轻松高效地生成这样复杂的合并图表。
三、总结
无需安装微软Excel,用代码也能很轻松实现单元格格式效果。 下载最新版本到www.aceyoffice.com。如果您想对Acey.ExcelX有进一步了解,在网站下载帮助和Demo。
相关文章推荐
- 在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表
- Excel生成报表之解决方案---柱状图
- 在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表
- 用poi3和chartdirect生成带图表的excel报表
- Excel生成报表之解决方案---簇状圆锥图
- Excel生成报表之解决方案---开盘-盘高-盘低-收盘图(附源码)
- Excel生成报表之解决方案--单元格添加批注
- Excel生成报表之解决方案--设置多个单元格区域的格式
- poi生成excel报表合并列
- Excel生成报表之解决方案--插入图片
- Excel生成报表之解决方案--组合的用法
- Excel生成报表之解决方案---气泡图
- 在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表
- Excel生成报表之解决方案--单元格富文本
- Excel生成报表之解决方案--设置单个单元格格式
- Excel生成报表之解决方案--设置整行整列(附源码)
- Excel生成报表之解决方案--合并单元格的用法
- 导入导出封装工具类(二) jXLS Excel报表生成工具类
- 使用POI生成Excel报表
- Delphi控制Excel自动生成报表