1. 程式人生 > >.Net 使用NPOI 實現Excel的簡單導入導出 - Ran0 - 博客園

.Net 使用NPOI 實現Excel的簡單導入導出 - Ran0 - 博客園

sheet ice out ont turn etc put mmd encoding

//創建不同版本的文件, excel2003版 或2007+版 public IWorkbook BuildWorkbook(DataTable dt, string file)
{
IWorkbook book; string fileExt = Path.GetExtension(file).ToLower(); if (fileExt == ".xlsx")
{ book = new XSSFWorkbook(); }
else if (fileExt == ".xls")
{ book = new HSSFWorkbook(); }
else { book = null; } //var book = new HSSFWorkbook(); ISheet sheet1 = book.CreateSheet("Sheet1");
ISheet sheet2 = book.CreateSheet("Sheet2"); //填充數據
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i < 65536)
{
IRow drow = sheet1.CreateRow(i);
for (int j = 0; j < dt.Columns.Count; j++)
{
ICell cell = drow.CreateCell(j, CellType.String);
cell.SetCellValue(dt.Rows[i][j].ToString());
}
}
if (i >= 65536) //再創建一個sheet
{
IRow drow = sheet2.CreateRow(i - 65536);
for (int j = 0; j < dt.Columns.Count; j++)
{
ICell cell = drow.CreateCell(j, CellType.String);
cell.SetCellValue(dt.Rows[i][j].ToString());
}
}
} //自動列寬
for (int i = 0; i <= dt.Columns.Count; i++)
{
sheet1.AutoSizeColumn(i, true);
sheet2.AutoSizeColumn(i, true);
}
return book;
} //導出至excel文件 public void ExportExcel(DataTable dt, string fileName = "")
{
////////生成Excel
IWorkbook book = BuildWorkbook(dt, fileName); //web 下載
if (fileName == "")
fileName = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now) + ".xls"; fileName = fileName.Trim(); HttpResponse httpResponse = HttpContext.Current.Response;
httpResponse.Clear();
httpResponse.Buffer = true;
httpResponse.Charset = Encoding.UTF8.BodyName;
httpResponse.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
httpResponse.ContentEncoding = Encoding.UTF8;
httpResponse.ContentType = "application/vnd.ms-excel; charset=UTF-8"; book.Write(httpResponse.OutputStream);
httpResponse.End();
}

.Net 使用NPOI 實現Excel的簡單導入導出 - Ran0 - 博客園