protected void Export_Excel(DataTable dt) { string filename = "学生基本信息.xls"; if (Request.UserAgent.IndexOf("firefox") == -1) { filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8); } Response.ContentType = "application/vnd.ms-excel;charset=UTF-8"; Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", filename)); Response.Clear(); //InitializeWorkbook InitializeWorkbook(); //GenerateData ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); //写入总标题,合并居中 IRow row = sheet1.CreateRow(0); ICell cell = row.CreateCell(0); cell.SetCellValue("学生基本信息"); ICellStyle style = hssfworkbook.CreateCellStyle(); style.Alignment = HorizontalAlignment.CENTER; IFont font = hssfworkbook.CreateFont(); font.FontHeight = 20 * 20; style.SetFont(font); cell.CellStyle = style; sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, dt.Columns.Count - 1)); //跨列 int r_count = dt.Rows.Count; int c_count = dt.Columns.Count; //插入列标题 row = sheet1.CreateRow(1); for (int x = 0; x < c_count; x++) { cell = row.CreateCell(x); cell.SetCellValue(dt.Columns[x].ColumnName); //Excel第一列的标题 sheet1.SetColumnWidth(x, 15*256); } for (int i = 0; i < r_count; i++) { row = sheet1.CreateRow(i + 2);//从第二行开始 for (int j = 0; j < c_count; j++) { row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString()); } } MemoryStream file = new MemoryStream(); hssfworkbook.Write(file); Response.BinaryWrite(file.GetBuffer()); Response.End(); } HSSFWorkbook hssfworkbook; void InitializeWorkbook() { hssfworkbook = new HSSFWorkbook(); DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation(); dsi.Company = "NPOI Team"; hssfworkbook.DocumentSummaryInformation = dsi; SummaryInformation si = PropertySetFactory.CreateSummaryInformation(); si.Subject = "NPOI SDK Example"; hssfworkbook.SummaryInformation = si; } }