使用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];
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;
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;
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;
}
5. 設定圖例位置為“底部”,然後儲存檔案到磁盤。
chart.Legend.Position = LegendPositionType.Bottom;
wb.SaveToFile("Sample.xlsx",ExcelVersion.Version2010);
生成的Excel文檔如下圖所示:
總結
網上不乏第三方操作excel的元件,Free Spire.XLS的優勢在于免費易用,功能齊全,但最多隻能處理5個工作簿,每個工作簿最多150行資料,這些是免費版本的限制。不過對于我來說已經足夠了。