我們小組上個季度接手了一個項目其中需要實作建立excel文檔的功能,尋找實作這個功能的控件的任務配置設定給了我,通過百度搜尋我找到了一個免費的控件,它是由E-iceblue公司推出的spire.xls控件,接下來的一段時間我嘗試地建立了多個應用程式來測試它所有的功能,說實話,這個控件功能很強大,它幾乎包含了Microsoft Excel的所有功能,而且使用它不需要安裝Microsoft的Office,另外裡面的方法屬性的命名基本上是和MS Excel中的功能相對應的,不清楚的功能可參考MS Excel就能找到相對于的屬性和方法來實作,對于我這個新手來說短短的幾周時間内就幾乎嘗試了所有的功能,目前我們已經把它應用到我們的項目中了。使用了它那麼久,到目前為止還是很滿意的,在這裡就向大家分享一下。由于它有太多的功能,需要太多的時間一一列出,下面我先用一個制作報表的例子來展示它的部分功能, 更多的功能以後慢慢地再分享給大家。
1.建立一個空的excel 文檔,擷取它的第一個sheet
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
2.制作報表的标題
static void MakeTitle(Worksheet worksheet)
{
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.Range["A1"].Text=data1;
如果是數字,可以使用
worksheet.Range["A1"].NumberValue=data2;
并設定它的輸出格式
worksheet.Range["C5"].NumberFormat = "#,##0.00";
下面我就附上我如何添加報表資料的代碼:
static void AddReportData(Worksheet worksheet)
{
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.添加過濾器
worksheet.AutoFilters.Range=worksheet.Range["A2:J20"];
5.到這裡這個報表就做好了,接下來把它儲存到一個excel文檔裡就可以了,它可以儲存Excel2003,Excel2007,Excel2010,Excel2013格式的文檔
string output = "Report.xlsx";
workbook.SaveToFile(output,ExcelVersion.Version2010);