NPOI 导出Excel

NPOIExcel npoiexcel = new NPOIExcel();
string filename = DateTime.Now.ToString("yyyyMMddHHmmssffff");
npoiexcel.ToExcel(dt, "工作计划", "工作计划", AppDomain.CurrentDomain.BaseDirectory + "Uploads\\工作计划" + filename + ".xls");

System.Web.UI.Page page = new System.Web.UI.Page();

HttpContext.Current.Response.Clear();

HttpContext.Current.Response.Buffer = true;

HttpContext.Current.Response.ContentType = "application/ms-excel";

HttpContext.Current.Response.ContentEncoding = Encoding.Default;

HttpContext.Current.Response.Charset = "UTF8";

// HttpContext.Current.Response.AddHeader("Content-Length", fileInfo.Length.ToString());

//HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + page.Server.UrlEncode("../Uploads\\报警信息" + filename + ".xls"));
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\"");

HttpContext.Current.Response.WriteFile("../Uploads\\工作计划" + filename + ".xls");

HttpContext.Current.Response.Flush();

HttpContext.Current.Response.End();

 

 

 

public class NPOIExcel
{
private string _title;
private string _sheetName;
private string _filePath;

/// <summary>
/// 导出到Excel
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
public bool ToExcel(DataTable table)
{
FileStream fs = new FileStream(this._filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
IWorkbook workBook = new HSSFWorkbook();
this._sheetName = this._sheetName.IsEmpty() ? "sheet1" : this._sheetName;
ISheet sheet = workBook.CreateSheet(this._sheetName);

//处理表格标题
IRow row = sheet.CreateRow(0);
row.CreateCell(0).SetCellValue(this._title);
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, table.Columns.Count - 1));
row.Height = 500;

ICellStyle cellStyle = workBook.CreateCellStyle();
IFont font = workBook.CreateFont();
font.FontName = "微软雅黑";
font.FontHeightInPoints = 17;
cellStyle.SetFont(font);
cellStyle.VerticalAlignment = VerticalAlignment.Center;
cellStyle.Alignment = HorizontalAlignment.Center;
row.Cells[0].CellStyle = cellStyle;

//处理表格列头
row = sheet.CreateRow(1);
for (int i = 0; i < table.Columns.Count; i++)
{
row.CreateCell(i).SetCellValue(table.Columns[i].ColumnName);
row.Height = 350;
sheet.AutoSizeColumn(i);
}

//处理数据内容
for (int i = 0; i < table.Rows.Count; i++)
{
row = sheet.CreateRow(2 + i);
row.Height = 250;
for (int j = 0; j < table.Columns.Count; j++)
{
row.CreateCell(j).SetCellValue(table.Rows[i][j].ToString());
sheet.SetColumnWidth(j, 256 * 15);
}
}

//写入数据流
workBook.Write(fs);
fs.Flush();
fs.Close();

return true;
}

/// <summary>
/// 导出到Excel
/// </summary>
/// <param name="table"></param>
/// <param name="title"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
public bool ToExcel(DataTable table, string title, string sheetName, string filePath)
{
this._title = title;
this._sheetName = sheetName;
this._filePath = filePath;
return ToExcel(table);
}
}

posted @ 2016-10-27 21:05  Debugs  阅读(163)  评论(0编辑  收藏  举报