Excel中的圖表能夠將數據可視化,方便我們比較分析數據。但也有一定的局限,例如:不能夠直接從圖表中讀出原來數據的准確值。Excel提供的解決方案是,在圖表下方添加一個模擬運算表,即在坐標軸下方添加包含建表時所依照的數據的表格。本文旨在介紹通過免費的Free Spire.XLS在C#獨立創建Excel文件,添加數據,生成圖表,並添加模擬運算表。
需要使用的命名空間:
using Spire.Xls;
using System.Drawing;
using System.Drawing;
步驟詳解:
步驟1:創建Excel文件,添加表單。
Workbook workbook =
new Workbook();
workbook.CreateEmptySheets( 1);
Worksheet sheet = workbook.Worksheets[ 0];
workbook.CreateEmptySheets( 1);
Worksheet sheet = workbook.Worksheets[ 0];
步驟二:為單元格添加樣本數據,用於一下不生成圖表。
sheet.Name =
"
Demo
";
sheet.Range[ " A1 "].Value = " 月份 ";
sheet.Range[ " A2 "].Value = " 一月 ";
sheet.Range[ " A3 "].Value = " 二月 ";
sheet.Range[ " A4 "].Value = " 三月 ";
sheet.Range[ " A5 "].Value = " 四月 ";
sheet.Range[ " A6 "].Value = " 五月 ";
sheet.Range[ " A7 "].Value = " 六月 ";
sheet.Range[ " B1 "].Value = " 小王 ";
sheet.Range[ " B2 "].NumberValue = 3.3;
sheet.Range[ " B3 "].NumberValue = 2.5;
sheet.Range[ " B4 "].NumberValue = 2.0;
sheet.Range[ " B5 "].NumberValue = 3.7;
sheet.Range[ " B6 "].NumberValue = 4.5;
sheet.Range[ " B7 "].NumberValue = 4.0;
sheet.Range[ " C1 "].Value = " 小新 ";
sheet.Range[ " C2 "].NumberValue = 3.8;
sheet.Range[ " C3 "].NumberValue = 3.2;
sheet.Range[ " C4 "].NumberValue = 1.7;
sheet.Range[ " C5 "].NumberValue = 3.5;
sheet.Range[ " C6 "].NumberValue = 4.5;
sheet.Range[ " C7 "].NumberValue = 4.3;
sheet.Range[ " D1 "].Value = " 小白 ";
sheet.Range[ " D2 "].NumberValue = 3.0;
sheet.Range[ " D3 "].NumberValue = 2.8;
sheet.Range[ " D4 "].NumberValue = 3.5;
sheet.Range[ " D5 "].NumberValue = 2.3;
sheet.Range[ " D6 "].NumberValue = 3.3;
sheet.Range[ " D7 "].NumberValue = 3.8;
sheet.Range[ " A1 "].Value = " 月份 ";
sheet.Range[ " A2 "].Value = " 一月 ";
sheet.Range[ " A3 "].Value = " 二月 ";
sheet.Range[ " A4 "].Value = " 三月 ";
sheet.Range[ " A5 "].Value = " 四月 ";
sheet.Range[ " A6 "].Value = " 五月 ";
sheet.Range[ " A7 "].Value = " 六月 ";
sheet.Range[ " B1 "].Value = " 小王 ";
sheet.Range[ " B2 "].NumberValue = 3.3;
sheet.Range[ " B3 "].NumberValue = 2.5;
sheet.Range[ " B4 "].NumberValue = 2.0;
sheet.Range[ " B5 "].NumberValue = 3.7;
sheet.Range[ " B6 "].NumberValue = 4.5;
sheet.Range[ " B7 "].NumberValue = 4.0;
sheet.Range[ " C1 "].Value = " 小新 ";
sheet.Range[ " C2 "].NumberValue = 3.8;
sheet.Range[ " C3 "].NumberValue = 3.2;
sheet.Range[ " C4 "].NumberValue = 1.7;
sheet.Range[ " C5 "].NumberValue = 3.5;
sheet.Range[ " C6 "].NumberValue = 4.5;
sheet.Range[ " C7 "].NumberValue = 4.3;
sheet.Range[ " D1 "].Value = " 小白 ";
sheet.Range[ " D2 "].NumberValue = 3.0;
sheet.Range[ " D3 "].NumberValue = 2.8;
sheet.Range[ " D4 "].NumberValue = 3.5;
sheet.Range[ " D5 "].NumberValue = 2.3;
sheet.Range[ " D6 "].NumberValue = 3.3;
sheet.Range[ " D7 "].NumberValue = 3.8;
步驟三:利用步驟二填充的數據,生成柱形圖,設置其在Excel中的位置,圖表名稱等。
Chart chart = sheet.Charts.Add(ExcelChartType.Column3DClustered);
chart.DataRange = sheet.Range[ " B1:D7 "];
chart.SeriesDataFromRange = false;
chart.TopRow = 7;
chart.BottomRow = 28;
chart.LeftColumn = 3;
chart.RightColumn = 11;
chart.ChartTitle = " 帶模擬數據表的柱狀圖示例 ";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = 12;
Spire.Xls.Charts.ChartSerie cs1 = chart.Series[ 0];
cs1.CategoryLabels = sheet.Range[ " A2:A7 "];
chart.DataRange = sheet.Range[ " B1:D7 "];
chart.SeriesDataFromRange = false;
chart.TopRow = 7;
chart.BottomRow = 28;
chart.LeftColumn = 3;
chart.RightColumn = 11;
chart.ChartTitle = " 帶模擬數據表的柱狀圖示例 ";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = 12;
Spire.Xls.Charts.ChartSerie cs1 = chart.Series[ 0];
cs1.CategoryLabels = sheet.Range[ " A2:A7 "];
步驟四:為柱狀圖添加模擬數據表。
chart.HasDataTable =
true;
步驟五:保存文檔為2010版Excel。
workbook.SaveToFile(
"
S3.xlsx
", ExcelVersion.Version2010);
代碼運行后效果截圖:

完整代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Xls;
using System.Drawing;
namespace ConsoleApplication2
{
class Program
{
static void Main( string[] args)
{
Workbook workbook = new Workbook();
workbook.CreateEmptySheets( 1);
Worksheet sheet = workbook.Worksheets[ 0];
sheet.Name = " Demo ";
sheet.Range[ " A1 "].Value = " 月份 ";
sheet.Range[ " A2 "].Value = " 一月 ";
sheet.Range[ " A3 "].Value = " 二月 ";
sheet.Range[ " A4 "].Value = " 三月 ";
sheet.Range[ " A5 "].Value = " 四月 ";
sheet.Range[ " A6 "].Value = " 五月 ";
sheet.Range[ " A7 "].Value = " 六月 ";
sheet.Range[ " B1 "].Value = " 小王 ";
sheet.Range[ " B2 "].NumberValue = 3.3;
sheet.Range[ " B3 "].NumberValue = 2.5;
sheet.Range[ " B4 "].NumberValue = 2.0;
sheet.Range[ " B5 "].NumberValue = 3.7;
sheet.Range[ " B6 "].NumberValue = 4.5;
sheet.Range[ " B7 "].NumberValue = 4.0;
sheet.Range[ " C1 "].Value = " 小新 ";
sheet.Range[ " C2 "].NumberValue = 3.8;
sheet.Range[ " C3 "].NumberValue = 3.2;
sheet.Range[ " C4 "].NumberValue = 1.7;
sheet.Range[ " C5 "].NumberValue = 3.5;
sheet.Range[ " C6 "].NumberValue = 4.5;
sheet.Range[ " C7 "].NumberValue = 4.3;
sheet.Range[ " D1 "].Value = " 小白 ";
sheet.Range[ " D2 "].NumberValue = 3.0;
sheet.Range[ " D3 "].NumberValue = 2.8;
sheet.Range[ " D4 "].NumberValue = 3.5;
sheet.Range[ " D5 "].NumberValue = 2.3;
sheet.Range[ " D6 "].NumberValue = 3.3;
sheet.Range[ " D7 "].NumberValue = 3.8;
Chart chart = sheet.Charts.Add(ExcelChartType.Column3DClustered);
chart.DataRange = sheet.Range[ " B1:D7 "];
chart.SeriesDataFromRange = false;
chart.TopRow = 7;
chart.BottomRow = 28;
chart.LeftColumn = 3;
chart.RightColumn = 11;
chart.ChartTitle = " 帶模擬數據表的柱狀圖示例 ";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = 12;
Spire.Xls.Charts.ChartSerie cs1 = chart.Series[ 0];
cs1.CategoryLabels = sheet.Range[ " A2:A7 "];
chart.HasDataTable = true;
workbook.SaveToFile( " S3.xlsx ", ExcelVersion.Version2010);
System.Diagnostics.Process.Start( " S3.xlsx ");
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Xls;
using System.Drawing;
namespace ConsoleApplication2
{
class Program
{
static void Main( string[] args)
{
Workbook workbook = new Workbook();
workbook.CreateEmptySheets( 1);
Worksheet sheet = workbook.Worksheets[ 0];
sheet.Name = " Demo ";
sheet.Range[ " A1 "].Value = " 月份 ";
sheet.Range[ " A2 "].Value = " 一月 ";
sheet.Range[ " A3 "].Value = " 二月 ";
sheet.Range[ " A4 "].Value = " 三月 ";
sheet.Range[ " A5 "].Value = " 四月 ";
sheet.Range[ " A6 "].Value = " 五月 ";
sheet.Range[ " A7 "].Value = " 六月 ";
sheet.Range[ " B1 "].Value = " 小王 ";
sheet.Range[ " B2 "].NumberValue = 3.3;
sheet.Range[ " B3 "].NumberValue = 2.5;
sheet.Range[ " B4 "].NumberValue = 2.0;
sheet.Range[ " B5 "].NumberValue = 3.7;
sheet.Range[ " B6 "].NumberValue = 4.5;
sheet.Range[ " B7 "].NumberValue = 4.0;
sheet.Range[ " C1 "].Value = " 小新 ";
sheet.Range[ " C2 "].NumberValue = 3.8;
sheet.Range[ " C3 "].NumberValue = 3.2;
sheet.Range[ " C4 "].NumberValue = 1.7;
sheet.Range[ " C5 "].NumberValue = 3.5;
sheet.Range[ " C6 "].NumberValue = 4.5;
sheet.Range[ " C7 "].NumberValue = 4.3;
sheet.Range[ " D1 "].Value = " 小白 ";
sheet.Range[ " D2 "].NumberValue = 3.0;
sheet.Range[ " D3 "].NumberValue = 2.8;
sheet.Range[ " D4 "].NumberValue = 3.5;
sheet.Range[ " D5 "].NumberValue = 2.3;
sheet.Range[ " D6 "].NumberValue = 3.3;
sheet.Range[ " D7 "].NumberValue = 3.8;
Chart chart = sheet.Charts.Add(ExcelChartType.Column3DClustered);
chart.DataRange = sheet.Range[ " B1:D7 "];
chart.SeriesDataFromRange = false;
chart.TopRow = 7;
chart.BottomRow = 28;
chart.LeftColumn = 3;
chart.RightColumn = 11;
chart.ChartTitle = " 帶模擬數據表的柱狀圖示例 ";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = 12;
Spire.Xls.Charts.ChartSerie cs1 = chart.Series[ 0];
cs1.CategoryLabels = sheet.Range[ " A2:A7 "];
chart.HasDataTable = true;
workbook.SaveToFile( " S3.xlsx ", ExcelVersion.Version2010);
System.Diagnostics.Process.Start( " S3.xlsx ");
}
}
}