NPOI操作EXCEL 添加报文头(AddHeader)出现下载框
来源:互联网 发布:巴宝莉格子侵权淘宝 编辑:程序博客网 时间:2024/04/30 07:41
NPOI官网下载:http://npoi.codeplex.com/releases
优点:不需要安装EXCEL
引用dll,使用方法:
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("mySheet"); NPOI.SS.UserModel.IRow row = sheet.CreateRow(0); row.CreateCell(0).SetCellValue("1"); NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(1); row2.CreateCell(0).SetCellValue("2"); System.IO.MemoryStream ms = new System.IO.MemoryStream(); book.Write(ms); Response.AddHeader("Content-Disposition", string.Format("attachment; filename=abc.xls")); Response.BinaryWrite(ms.ToArray()); book = null; ms.Close(); ms.Dispose();
本地保存:
string tempPath = @"C:\Users\Administrator\Desktop\1.xls";FileStream file = new FileStream(tempPath, FileMode.OpenOrCreate);book.Write(file);file.Flush();file.Close();
Response.AddHeader("Content-Disposition", string.Format("attachment; filename=abc.xls"));一开始我以为只能在aspx中使用这段代码,结果发现在html+ashx中也可以,只是不能用ajax的方式请求,要在前台: href="../dzxswebservice/exportTest.ashx" 使用a标签的方式请求后台。
这里:
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); System.IO.MemoryStream ms = new System.IO.MemoryStream(); book.Write(ms); context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff"))); context.Response.BinaryWrite(ms.ToArray());这段代码就是提供了下载的弹出框
导入: 这里的HSSFWorkbook是操作的2003版本的EXCEL,如果要操作更高级的版本需要引用NPOI.OOXML。
然后把这里所有有关HSSFWorkbook类的改成XSSFWorkbook,HSSFRow改成XSSFRow
HSSFWorkbook hssfworkbook; #region public DataTable ImportExcelFile(string filePath) { #region//初始化信息 try { using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { hssfworkbook = new HSSFWorkbook(file); } } catch (Exception e) { throw e; } #endregion NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0); System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); DataTable dt = new DataTable(); for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++) { dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString()); //标题 } while (rows.MoveNext()) { HSSFRow row = (HSSFRow)rows.Current; DataRow dr = dt.NewRow(); for (int i = 0; i < row.LastCellNum; i++) { NPOI.SS.UserModel.ICell cell = row.GetCell(i); if (cell == null) { dr[i] = null; } else { dr[i] = cell.ToString(); } } dt.Rows.Add(dr); } return dt; } #endregionLastCellNum根据最后一列有值列判断的。如果第九列有值则LastCellNum的值为9。
上面代码是把EXCEL内容转成datatable类型,下面是怎么从客户端读取EXCEL。
思路:本地上传EXCEL到服务器,再从服务器读取:
HttpFileCollection files = context.Request.Files; if (files.Count > 0) { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); string name = Convert.ToInt64(ts.TotalSeconds).ToString() + ".xlsx"; string path = context.Request.MapPath("../../../excel/" + name); files[0].SaveAs(path); DataTable dt = ImportExcelFile(path); new SFInfoManageBLL().InserSF(dt); }
设置单元格的宽:sheet.DefaultColumnWidth = 15;
设置字体:
NPOI.SS.UserModel.IFont font = book.CreateFont();
NPOI.SS.UserModel.ICellStyle style1 = book.CreateCellStyle();
font.FontName = "宋体";
font.FontHeightInPoints = 12;
font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Bold;
style1.SetFont(font);
NPOI.SS.UserModel.IRow r = sheet.CreateRow(0);
NPOI.SS.UserModel.ICell c0 = r.CreateCell(0);
c0.CellStyle = style1;
普通导出:需要安装EXCEL
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); try { Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Add(Missing.Value); // 添加一个工作簿 Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet;// 获取当前工作表 sheet.Name = "mysheet"; for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { sheet.Cells[i + 1, j + 1] = dt.Rows[i][j]; } } excel.Visible = false; excel.DisplayAlerts = true; sheet.SaveAs("D:\\1.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); } catch (Exception ex) { } finally { excel.Quit(); excel = null; }
- NPOI操作EXCEL 添加报文头(AddHeader)出现下载框
- 将一个文件作为下载的形式打开【下载文件】,添加报文头context.Response.AddHeader("Content-disposition", "attachment; filename="
- C#操作Excel(NPOI)
- Picasso加载图片添加请求头addHeader
- 使用 npoi 操作excel ”npoi“可从“http://www.codeplex.com/npoi”下载
- C#操作excel(NPOI篇)
- C#操作excel(NPOI篇)
- NPOI操作Excel 1.2教程(目录)
- C#操作excel(NPOI篇)
- Net操作Excel(终极方法NPOI)
- Net操作Excel(终极方法NPOI)
- Net操作Excel(终极方法NPOI)
- Net操作Excel(终极方法NPOI)
- Net操作Excel(终极方法NPOI)
- NPOI:初次操作(新建Excel)
- .Net操作excel(使用NPOI)
- NPOI 进行EXCEL操作
- 用NPOI操作Excel
- 消除IE stop running this script弹出框
- 【学习】JavaScript设计模式——认识设计模式
- androidstudio安装注意事项(打不开的可能原因)
- 【Android】AsyncTask异步类
- TextView
- NPOI操作EXCEL 添加报文头(AddHeader)出现下载框
- inflate引入的布局高度不对问题
- android的apk加壳工具对比
- SQLSTATE=57016
- 我是如何利用一个周末时间成为前端工程师的
- iOS 集成微信支付
- 应用基本框架的搭建
- Ubuntu14.0.4系统如何获取root权限
- OpenCV基础优化之使用drawContours