NPOI操作Excel 004:写入空Excel(添加保存提示框)

前文说道写入excel的样例,当中保存Excle后须要添加提示框。让用户自己选择保存路径,做改动例如以下。

引用的dll等前面已经说过了,

直接看代码:

        protected void Btn_WriteExcel(object sender, EventArgs e)
{
//要保存的内容,此处用代码生成的内容。而在实际中能够是数据库读取的,
//亦或是页面输入的内容 DataTable dt = new DataTable(); dt.Columns.Add("序号"); dt.Columns.Add("姓名"); dt.Columns.Add("年龄"); dt.Columns.Add("职位"); for (int i = 0; i < 5; i++)
{
DataRow row = dt.NewRow(); row["序号"] = i + 1; row["姓名"] = "Test"+i ; row["年龄"] = 25 + i; row["职位"] = i % 2 == 0 ? "project师" : "经理"; dt.Rows.Add(row);
}
//为了更好的看怎样使用NPOI。此处显示两行标题。
//显示标题能够看怎样合并单元格
string mainTitle = "主标题"; string secondTitle = "副标题"; //保存的Excel路径,文件名称用guid生成
string fileIndex = HttpRuntime.AppDomainAppPath.ToString(); string tempExcel = fileIndex + @"\ExcelFile\{0}.xls"; tempExcel = string.Format(tempExcel, System.Guid.NewGuid()); int rowIndex = 0; //操作Excel的几个主要对象,此处声明
HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.CreateSheet(); //row0和row1是两行标题
HSSFRow row0 = sheet.CreateRow(rowIndex); HSSFCell cell0 = row0.CreateCell(0); cell0.SetCellValue(mainTitle); HSSFCellStyle style = workbook.CreateCellStyle(); style.Alignment = CellHorizontalAlignment.CENTER; HSSFFont font = workbook.CreateFont(); font.Boldweight = short.MaxValue; style.SetFont(font); cell0.CellStyle = style; //此处合并单元格
sheet.AddMergedRegion(new NPOI.HSSF.Util.CellRangeAddress(rowIndex, rowIndex, 0, 5)); rowIndex++; HSSFRow row1 = sheet.CreateRow(rowIndex); HSSFCell cell1 = row1.CreateCell(0); cell1.SetCellValue(secondTitle); cell1.CellStyle = style; sheet.AddMergedRegion(new NPOI.HSSF.Util.CellRangeAddress(rowIndex, rowIndex, 0, 5)); //由于列名已经指定,占一行
rowIndex++; //这一行显示表头
HSSFRow row2 = sheet.CreateRow(rowIndex); int row2cellIndex = 0; foreach (DataColumn col in dt.Columns)
{
HSSFCell cell = row2.CreateCell(row2cellIndex); cell.SetCellValue(col.ColumnName.ToString()); row2cellIndex++;
} rowIndex++; //datatable的内容
for(int i= 0;i< dt.Rows.Count;i++)
{
HSSFRow row = sheet.CreateRow(rowIndex); foreach (DataColumn col in dt.Columns)
{
row.CreateCell(col.Ordinal).SetCellValue(dt.Rows[i][col].ToString()); } rowIndex++;
} //使用文件流保存
MemoryStream ms = new MemoryStream(); workbook.Write(ms); ms.Flush(); ms.Position = 0; workbook = null; sheet = null; using (FileStream fs = new FileStream(tempExcel, FileMode.Create, FileAccess.ReadWrite))
{
ms.WriteTo(fs);
} Response.Clear();
Response.ClearHeaders();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachent;filename=" + HttpUtility.UrlDecode(@"TestExcel.xls"));//TestExcel.xls可改动
Response.WriteFile(tempExcel, true);
Response.Flush();
Response.Close(); if (File.Exists(tempExcel))
{
File.Delete(tempExcel);
} Response.End(); ms.Close();
}

添加的是这段代码:

            Response.Clear();
Response.ClearHeaders();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachent;filename=" + HttpUtility.UrlDecode(@"TestExcel.xls"));//TestExcel.xls可改动
Response.WriteFile(tempExcel, true);
Response.Flush();
Response.Close();

可实如今网页中弹出提示框保存文件。
project下载:http://download.csdn.net/detail/yysyangyangyangshan/9037569

上一篇:利用html5的画布canvas进行图片压缩处理


下一篇:Qt 与 JavaScript 通信