有的web項目選用Excel作為報表方案,在服務器端生成Excel文件,然後傳送到客戶端,由客戶端進行打印。在國內的環境下,相對PDF方式,Excel的安裝率應該比pdf閱讀器的安裝率要高,同時,微軟也為C#操作Excel提供了完備的接口,雖然ZedGraph和其他的商業報表工具生成的統計圖也很好,但是人家微軟畢竟是大品牌,值得信賴。
本文介紹使用C#調用Excel來生成統計圖(Chart)的以及Chart圖中各部分控制的一些方法。
在上一篇使用C#和Excel進行報表開發(二)-操作統計圖(Chart)中,我們使用一個預定義的Excel文件,通過改變Chart中的某個值來生成統計圖。本文進一步演示如何從指定的數據從頭生成統計圖。
首先當然要添加對Excel的引用,然後需要定義幾個要用到的Excel對象:
Excel.Application ThisApplication = null;
Excel.Workbooks m_objBooks = null;
Excel._Workbook ThisWorkbook = null;
Excel.Worksheet xlSheet = null;
在創建一個新的_WorkBook對象的時候,默認的會含有3個Sheet,所以為了顯示清晰,將多余的Sheet都刪掉:
private void DeleteSheet()
{
foreach (Excel.Worksheet ws in ThisWorkbook.Worksheets)
if (ws != ThisApplication.ActiveSheet)
{
ws.Delete();
}
foreach (Excel.Chart cht in ThisWorkbook.Charts)
cht.Delete();
}
再下來需要添加用來給Chart提供數據的Sheet:
private void AddDatasheet()
{
xlSheet = (Excel.Worksheet)ThisWorkbook.
Worksheets.Add(Type.Missing, ThisWorkbook.ActiveSheet,
Type.Missing, Type.Missing);
xlSheet.Name = "數據";
}
生成Chart用到的數據,因為是演示,所以這裡使用生成隨機數的方法來替代從數據庫中提取數據。
private void LoadData()
{
Random ran = new Random();
for (int i = 1; i <= 12; i++)
{
xlSheet.Cells[i, 1] = i.ToString() + "月";
xlSheet.Cells[i, 2] = ran.Next(2000).ToString();
}
}