使用内存流导出Excel

public MemoryStream MemoryStreamDeiveFlowInfoaging(DataTable Table)
{
Dictionary<int , string> KeyValue = new Dictionary<int,string>();
for (int i = 0; i < Table.Columns.Count; i++)
{
KeyValue.Add(i,Table.Columns[i].ColumnName);
}
NPOI.HSSF.UserModel.HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();//创建一个工作簿
NPOI.SS.UserModel.ISheet isheet = workbook.CreateSheet(DateTime.Now.ToString("yyyyMMddHHmmss"));//在工作簿创建一个选项卡
NPOI.SS.UserModel.IRow irow = isheet.CreateRow(0);//在第0行开始写入键值
for (int i = 0; i < KeyValue.Keys.Count; i++)
{
irow.CreateCell(i).SetCellValue(KeyValue.Values.ToArray()[i]);
}
//现在开始将DataTable数据写入
for (int ii = 0; ii < Table.Rows.Count; ii++)
{
NPOI.SS.UserModel.IRow irow2 = isheet.CreateRow(ii + 1);//第0行已经有数据所以加1
for (int iii = 0; iii < Table.Columns.Count; iii++)
{
irow2.CreateCell(iii).SetCellValue(Convert.ToString(Table.Rows[ii][iii]));
}
}
//写入内存
System.IO.MemoryStream io = new MemoryStream();
//释放
using (io = new MemoryStream())
{
workbook.Write(io);//在工作簿输出流
byte[] arratByte = io.ToArray();
io.Write(arratByte, 0, arratByte.Length); ;//在工作簿写入流
io.Flush();
}
return io;
}

2017年3月16日记录

/// 设置内存流响应格式编码
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application / vnd.openxmlformats - officedocument.spreadsheetml.sheet";// "application/ms-excel/msword";
Response.AddHeader("Content-Disposition", "attachment;fileName=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
Response.BinaryWrite(MemoryStreamDeiveFlowInfoaging(Table).ToArray());
Response.Write(new EmptyResult());

原文地址:https://www.cnblogs.com/rancrazy/p/6561046.html