1 #region 不使用模板生成Excel表
2 case "ReportByNone":
3 {
4
5 DataView dv = Cache["ReportByNone"] as DataView;
6 //建立一个Excel.Application的新进程
7 Excel.Application app = new Excel.Application();
8 if (app == null)
9 {
10 return;
11 }
12 app.Visible = false;
13 app.UserControl = true;
14 Workbooks workbooks = app.Workbooks;
15 _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);//这里的Add方法里的参数就相当于继承了一个空模板(暂这样理解吧)
16 Sheets sheets = workbook.Worksheets;
17 _Worksheet worksheet = (_Worksheet)sheets.get_Item(1);
18 if (worksheet == null)
19 {
20 return;
21 }
22
23 worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 3]).Merge(Missing.Value); //横向合并
24 worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 1]).Value2 = "导出EXCEL测试一";
25 excelOperate.SetBold(worksheet, worksheet.Cells[1, 1], worksheet.Cells[1, 1]); //黑体
26 excelOperate.SetHAlignCenter(worksheet, worksheet.Cells[1, 1], worksheet.Cells[1, 1]);//居中
27 excelOperate.SetBgColor(worksheet, worksheet.Cells[1, 1], worksheet.Cells[1, 1], System.Drawing.Color.Red);//背景色
28 excelOperate.SetFontSize(worksheet, worksheet.Cells[1, 1], worksheet.Cells[1, 1], 16);//字体大小
29 excelOperate.SetRowHeight(worksheet, worksheet.Cells[1, 1], worksheet.Cells[1, 1], 32.25);//行高
30 worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 1]).Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);//黑色连续边框
31
32 worksheet.Cells[2, 1] = "序号";
33 worksheet.Cells[2, 2] = "公司";
34 worksheet.Cells[2, 3] = "部门";
35 excelOperate.SetBold(worksheet, worksheet.Cells[2, 1], worksheet.Cells[2, 3]); //黑体
36 worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[2, 3]).Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);
37 excelOperate.SetHAlignRight(worksheet, worksheet.Cells[2, 1], worksheet.Cells[2, 3]);
38 excelOperate.SetBgColor(worksheet, worksheet.Cells[2, 1], worksheet.Cells[2, 3], System.Drawing.Color.Silver);//背景色
39 int rowNum = 0;
40 for (int i = 0; i < dv.Count; i++)
41 {
42 rowNum = i + 1;
43 worksheet.Cells[3 + i, 1] = rowNum;
44 worksheet.Cells[3 + i, 2] = dv[i].Row[0].ToString();
45 worksheet.Cells[3 + i, 3] = dv[i].Row[1].ToString();
46
47 excelOperate.SetBold(worksheet, worksheet.Cells[3 + i, 1], worksheet.Cells[3 + i, 1]); //黑体
48 excelOperate.SetHAlignCenter(worksheet, worksheet.Cells[3 + i, 1], worksheet.Cells[3 + i, 3]);//居中
49 worksheet.get_Range(worksheet.Cells[3 + i, 1], worksheet.Cells[3 + i, 3]).Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);//设置边框颜色,不然打印预览,会非常不雅观
50
51 }
52 excelOperate.SetColumnWidth(worksheet, "A", 10);
53 excelOperate.SetColumnWidth(worksheet, "B", 20);
54 excelOperate.SetColumnWidth(worksheet, "C", 20);
55 worksheet.Name = "导出EXCEL测试一";
56
57 tick = DateTime.Now.Ticks.ToString();
58 save_path = temp_path + "\\"+ tick + ".xls";
59 workbook.SaveAs(save_path, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
60 excelOperate.Dispose(worksheet, workbook, app);//关闭Excel进程
61
62 }
63 break;
64
65 #endregion 效果如下:

以上我给了两个最简单的操作说明,下面详细说一下对于一些稍微复杂的报表的生成处理
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页

【责编:Ken】