我們小組上個季度接手了一個項目其中需要實現創建excel文檔的功能,尋找實現這個功能的控件的任務分配給了我,通過百度搜索我找到了一個免費的控件,它是由E-iceblue公司推出的spire.xls控件,接下來的一段時間我嘗試地創建了多個應用程序來測試它所有的功能,說實話,這個控件功能很強大,它幾乎包含了Microsoft Excel的所有功能,而且使用它不需要安裝Microsoft的Office,另外里面的方法屬性的命名基本上是和MS Excel中的功能相對應的,不清楚的功能可參考MS Excel就能找到相對於的屬性和方法來實現,對於我這個新手來說短短的幾周時間內就幾乎嘗試了所有的功能,目前我們已經把它應用到我們的項目中了。使用了它那么久,到目前為止還是很滿意的,在這里就向大家分享一下。由於它有太多的功能,需要太多的時間一一列出,下面我先用一個制作報表的例子來展示它的部分功能, 更多的功能以后慢慢地再分享給大家。
1.創建一個空的excel 文檔,獲取它的第一個sheet
Worksheet worksheet = workbook.Worksheets[ 0];
2.制作報表的標題
{
CellRange range=worksheet.Range[ " A1 "]; // 獲取A1單元格
range.Text = " 職工人事信息表 "; // 添加標題
range.Style.Font.IsBold = true; // 設置標題字體加粗
range.Style.Font.Size = 14; // 設置字體大小為14
range.Style.HorizontalAlignment = HorizontalAlignType.Center; // 設置標題水平居中
range.Style.VerticalAlignment = VerticalAlignType.Center; // 設置標題垂直居中
worksheet.Range[ " A1:J1 "].Merge(); // 合並A1到J1的單元格為一個
}
效果圖:

3.添加報表數據,為了方便,在這里我使用了一個數據庫中的一個datatable的數據作為報表數據,當然你也可以分別為一個個單元格賦值
例如:如果是文本,可以使用
如果是數字,可以使用
並設置它的輸出格式
下面我就附上我如何添加報表數據的代碼:
{
worksheet.InsertDataTable(dataTable, true, 2, 1); // 從第二行第一列的單元格開始插入一個dataTable,並將列頭的數據也添加
CellStyle style = worksheet.Range[ " A2:J2 "].Style; // 獲取A2到J2的單元格的格式
style.Font.Color = Color.White; // 設置字體顏色為白色
style.KnownColor = ExcelColors.Green; // 設置單元格的背景顏色為綠色
style.Font.IsBold = true; // 設置字體加粗
style.HorizontalAlignment = HorizontalAlignType.Center; // 設置文本水平居中
style.VerticalAlignment = VerticalAlignType.Center; // 設置文本垂直居中
style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin; // 設置左邊的border
style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin; // 設置右邊的border
style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin; // 設置上面的border
style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin; // 設置下面的border
CellStyle oddStyle = worksheet.Workbook.Styles.Add( " oddStyle "); // 創建一個style並命名為"oddStyle"
oddStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
oddStyle.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
oddStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
oddStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
oddStyle.KnownColor = ExcelColors.LightGreen1;
CellStyle evenStyle = worksheet.Workbook.Styles.Add( " evenStyle "); // 創建一個style並命名為"evenStyle"
evenStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
evenStyle.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
evenStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
evenStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
evenStyle.KnownColor = ExcelColors.LightTurquoise;
// 為A3到J20的單元格設置格式,如果是奇數行使用oddStyle,如果是偶數行使用evenStyle
foreach (CellRange range in worksheet.Range[ " A3:J20 "].Rows)
{
if (range.Row % 2 == 0)
range.CellStyleName = evenStyle.Name;
else
range.CellStyleName = oddStyle.Name;
}
worksheet.AllocatedRange.AutoFitColumns(); // 自動調整列的寬度去適應單元格的數據
worksheet.AllocatedRange.AutoFitRows(); // 自動調整行的高度去適應單元格的數據
}
效果圖:

4.添加過濾器
效果圖:

5.到這里這個報表就做好了,接下來把它保存到一個excel文檔里就可以了,它可以保存Excel2003,Excel2007,Excel2010,Excel2013格式的文檔
workbook.SaveToFile(output,ExcelVersion.Version2010);
