public static bool DataTableToExcel2(DataTable datatable, string filepath, out string error) { error = ""; Workbook workbook = new Workbook(); try { if (datatable == null) { error = "DataTableToExcel:datatable 为空"; return false; } Style style = workbook.get_Styles().get_Item(workbook.get_Styles().Add()); style.set_HorizontalAlignment(1); style.set_ForegroundColor(Color.FromArgb(0x99, 0xcc, 0)); style.set_Pattern(1); style.get_Font().set_IsBold(true); int num = 0; int num2 = 0; while (num2 < datatable.Columns.Count) { DataColumn column = datatable.Columns[num2]; string str = column.Caption ?? column.ColumnName; workbook.get_Worksheets().get_Item(0).get_Cells().get_Item(num, num2).PutValue(str); workbook.get_Worksheets().get_Item(0).get_Cells().get_Item(num, num2).set_Style(style); num2++; } num++; foreach (DataRow row in datatable.Rows) { for (num2 = 0; num2 < datatable.Columns.Count; num2++) { workbook.get_Worksheets().get_Item(0).get_Cells().get_Item(num, num2).PutValue(row[num2].ToString()); } num++; } for (int i = 0; i < datatable.Columns.Count; i++) { workbook.get_Worksheets().get_Item(0).AutoFitColumn(i, 0, 150); } workbook.get_Worksheets().get_Item(0).FreezePanes(1, 0, 1, datatable.Columns.Count); workbook.Save(filepath); return true; } catch (Exception exception) { error = error + " DataTableToExcel: " + exception.Message; return false; } }