使用Free Spire.XLS插入圖表
前言
最近在研究Office中間件,上網搜索了下,比較出名的有兩個:Aspose和Spire,兩者功能齊全,對Office的支持趨近完善,但售價不菲。仔細搜索下,發現Spire系列還有免費版的產品,相對商業版本,在性能和文件轉換功能上有縮水。通過一段時間的使用后,我發現免費版本能夠滿足我的大部分需求。所以寫下這篇文章,和大家分享一下我的使用心得,這里我使用的是Free Spire.XLS,根據文中中的數據插入圖表並保存。
准備
首先從CodePlex(https://freenetexcel.codeplex.com/)上下載Free Spire.XLS,然后引用Spire.License.dll和Spire.XLS.dll到工程中,如下圖所示:
步驟
1.載入一個現有的Excel文檔,里面已經包含生成圖表所需的數據。
Workbook wb =
new Workbook();
wb.LoadFromFile( " Test.xlsx ", ExcelVersion.Version2010);
Worksheet ws = wb.Worksheets[ 0];
wb.LoadFromFile( " Test.xlsx ", ExcelVersion.Version2010);
Worksheet ws = wb.Worksheets[ 0];
2.創建一個條形圖表,並設置圖表的數據區域和位置。
//
Create a coulumn clustered chart
Chart chart = ws.Charts.Add(ExcelChartType.ColumnClustered);
// Set region of chart data
chart.DataRange = ws.Range[ " A1:C5 "];
chart.SeriesDataFromRange = false;
// Set position of chart
chart.LeftColumn = 1;
chart.TopRow = 7;
chart.RightColumn = 11;
chart.BottomRow = 30;
Chart chart = ws.Charts.Add(ExcelChartType.ColumnClustered);
// Set region of chart data
chart.DataRange = ws.Range[ " A1:C5 "];
chart.SeriesDataFromRange = false;
// Set position of chart
chart.LeftColumn = 1;
chart.TopRow = 7;
chart.RightColumn = 11;
chart.BottomRow = 30;
3. 設置圖表標題格式以及兩條坐標軸的格式。
//
Chart title
chart.ChartTitle = " Sales market by country ";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = 12;
// Chart primary category axis
chart.PrimaryCategoryAxis.Title = " Country ";
chart.PrimaryCategoryAxis.Font.IsBold = true;
chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
// Chart primary value axis
chart.PrimaryValueAxis.Title = " Sales(in Dollars) ";
chart.PrimaryValueAxis.HasMajorGridLines = false;
chart.PrimaryValueAxis.MinValue = 1000;
chart.PrimaryValueAxis.TitleArea.IsBold = true;
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = - 90;
chart.ChartTitle = " Sales market by country ";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = 12;
// Chart primary category axis
chart.PrimaryCategoryAxis.Title = " Country ";
chart.PrimaryCategoryAxis.Font.IsBold = true;
chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
// Chart primary value axis
chart.PrimaryValueAxis.Title = " Sales(in Dollars) ";
chart.PrimaryValueAxis.HasMajorGridLines = false;
chart.PrimaryValueAxis.MinValue = 1000;
chart.PrimaryValueAxis.TitleArea.IsBold = true;
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = - 90;
4. 顯示數據標簽,並將位置設定為“居中”。
//
Format data labels
foreach (ChartSerie cs in chart.Series)
{
cs.Format.Options.IsVaryColor = true;
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
cs.DataPoints.DefaultDataPoint.DataLabels.Position = DataLabelPositionType.Center;
}
foreach (ChartSerie cs in chart.Series)
{
cs.Format.Options.IsVaryColor = true;
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
cs.DataPoints.DefaultDataPoint.DataLabels.Position = DataLabelPositionType.Center;
}
5. 設置圖例位置為“底部”,然后保存文件到磁盤。
chart.Legend.Position = LegendPositionType.Bottom;
wb.SaveToFile( " Sample.xlsx ",ExcelVersion.Version2010);
wb.SaveToFile( " Sample.xlsx ",ExcelVersion.Version2010);
生成的Excel文檔如下圖所示:
總結
網上不乏第三方操作excel的組件,Free Spire.XLS的優勢在於免費易用,功能齊全,但最多只能處理5個工作簿,每個工作簿最多150行數據,這些是免費版本的限制。不過對於我來說已經足夠了。