1.应引用Aspose.Cells.dll类
1 #region //导出文件 2 private void Export(DataTable dt, string tableName) 3 { 4 5 Workbook workbook = new Workbook(); //工作簿 6 Worksheet sheet = workbook.Worksheets[0]; //工作表 7 Cells cells = sheet.Cells;//单元格 8 9 10 #region//表格样式 11 12 //为标题设置样式 13 Aspose.Cells.Style style1 = workbook.Styles[workbook.Styles.Add()];//新增样式 14 style1.HorizontalAlignment = TextAlignmentType.Center;//文字居中 15 style1.Font.Name = "宋体";//文字字体 16 style1.Font.Size = 16;//文字大小 17 style1.Font.IsBold = true;//粗体 18 19 20 //为标题设置样式2 21 Aspose.Cells.Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式 22 style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中 23 style2.Font.Name = "宋体";//文字字体 24 style2.Font.Size = 10;//文字大小 25 style2.Font.IsBold = true;//粗体 26 style2.IsTextWrapped = true;//自动换行 27 style2.Pattern = BackgroundType.Solid; //设置背景样式 28 style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线 29 style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线 30 style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线 31 style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线 32 33 //为标题设置样式3 34 Aspose.Cells.Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式 35 style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中 36 style3.Font.Name = "宋体";//文字字体 37 style3.Font.Size = 10;//文字大小 38 style3.IsTextWrapped = true;//自动换行 39 style3.Pattern = BackgroundType.Solid; //设置背景样式 40 style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线 41 style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线 42 style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线 43 style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线 44 45 //字体样式 46 Aspose.Cells.Style font1 = workbook.Styles[workbook.Styles.Add()];//新增样式 47 font1.HorizontalAlignment = TextAlignmentType.Left;//文字居中 48 font1.Font.Name = "宋体";//文字字体 49 font1.Font.Size = 10;//文字大小 50 font1.Font.IsBold = true;//粗体 51 font1.IsTextWrapped = true;//自动换行 52 font1.Pattern = BackgroundType.Solid; //设置背景样式 53 font1.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线 54 font1.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线 55 font1.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线 56 font1.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线 57 58 //字体样式 59 Aspose.Cells.Style font2 = workbook.Styles[workbook.Styles.Add()];//新增样式 60 font2.HorizontalAlignment = TextAlignmentType.Left;//文字居中 61 font2.Font.Name = "宋体";//文字字体 62 font2.Font.Size = 10;//文字大小 63 font2.IsTextWrapped = true;//自动换行 64 font2.Pattern = BackgroundType.Solid; //设置背景样式 65 font2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线 66 font2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线 67 font2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线 68 font2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线 69 70 #endregion 71 72 int Rownum = dt.Rows.Count;//表格行数 73 74 //生成行2 列名行 75 cells[0, 0].PutValue("#"); 76 cells[0, 0].SetStyle(style2); 77 cells[0, 1].PutValue("#"); 78 cells[0, 1].SetStyle(style2); 79 cells[0, 2].PutValue("#"); 80 cells[0, 2].SetStyle(style2); 81 cells[0, 3].PutValue("#"); 82 cells[0, 3].SetStyle(style2); 83 cells[0, 4].PutValue("#"); 84 cells[0, 4].SetStyle(style2); 85 cells[0, 5].PutValue("#"); 86 cells[0, 5].SetStyle(style2); 87 cells[0, 6].PutValue("#"); 88 cells[0, 6].SetStyle(style2); 89 cells[0, 7].PutValue("#"); 90 cells[0, 7].SetStyle(style2); 91 92 cells.SetRowHeight(1, 35); 93 94 for (int i = 0; i < Rownum; i++) 95 { 96 97 cells[1 + i, 0].PutValue(dt.Rows[i]["#"].ToString()); 98 cells[1 + i, 1].PutValue(dt.Rows[i]["#"].ToString()); 99 cells[1 + i, 2].PutValue(dt.Rows[i]["#"].ToString()); 100 cells[1 + i, 3].PutValue(dt.Rows[i]["#"].ToString()); 101 cells[1 + i, 4].PutValue(dt.Rows[i]["#"].ToString()); 102 cells[1 + i, 5].PutValue(dt.Rows[i]["#"].ToString()); 103 cells[1 + i, 6].PutValue(dt.Rows[i]["#"].ToString()); 104 cells[1 + i, 7].PutValue(dt.Rows[i]["#"].ToString()); 105 for (int k = 0; k < 8; k++) 106 { 107 cells[1 + i, k].SetStyle(style3); 108 } 109 110 cells.SetRowHeight(1 + i, 30); 111 112 } 113 //setColumnWithAuto(sheet); 114 115 Response.Clear(); 116 Response.Buffer = true; 117 Response.Charset = "utf-8"; 118 string strTemp = System.Web.HttpUtility.UrlEncode(tableName, System.Text.Encoding.UTF8);//解决文件名乱码 119 Response.AppendHeader("Content-Disposition", "attachment;filename=" + strTemp + ".xlsx"); 120 Response.ContentEncoding = System.Text.Encoding.UTF8; 121 Response.ContentType = "application/ms-excel"; 122 Response.BinaryWrite(workbook.SaveToStream().ToArray()); 123 Response.End(); 124 125 webmsg.message("下载成功!"); 126 } 127 128 /// <summary> 129 /// 130 /// 设置表页的列宽度自适应 131 /// /// </summary> 132 /// /// <param name="sheet">worksheet对象</param> 133 /// 134 public static void setColumnWithAuto(Worksheet sheet) 135 { 136 Cells cells = sheet.Cells; 137 int columnCount = cells.MaxColumn; //获取表页的最大列数 138 int rowCount = cells.MaxRow; //获取表页的最大行数 139 for (int col = 0; col <= columnCount; col++) 140 { 141 sheet.AutoFitColumn(col, 0, rowCount); 142 } 143 for (int col = 0; col <= columnCount; col++) 144 { 145 int width = 0; 146 switch (col) 147 { 148 case 0: width = 120; 149 break; 150 case 1: width = 5; 151 break; 152 case 2: width = 5; 153 break; 154 case 3: width = 5; 155 break; 156 case 4: width = 50; 157 break; 158 case 5: width = 150; 159 break; 160 case 6: width = 50; 161 break; 162 } 163 164 cells.SetColumnWidthPixel(col, cells.GetColumnWidthPixel(col) + width); 165 } 166 } 167 #endregion