NPOI 生成Excel 的——常用

2024-04-06 22:18
文章标签 excel 生成 常用 npoi

本文主要是介绍NPOI 生成Excel 的——常用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

把自己常用的整理了出来,(*^__^*) 嘻嘻……

有关文件输出文件名乱码的问题

有设置Excel中的一些样式问题

有直接保存Excel的

更多NPOI的实例说明:http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html   这个可是别个大虾滴。

[csharp] view plain copy print ?
  1. using System; 
  2. using System.Collections; 
  3. using System.Configuration; 
  4. using System.Data; 
  5. using System.Web; 
  6. using System.Web.Security; 
  7. using System.Web.UI; 
  8. using System.Web.UI.HtmlControls; 
  9. using System.Web.UI.WebControls; 
  10. using System.Web.UI.WebControls.WebParts; 
  11.  
  12. using System.IO; 
  13. using NPOI.SS.UserModel; 
  14. using NPOI.HSSF.UserModel; 
  15. using NPOI.HSSF.Util; 
  16.  
  17. public partial class _Default : System.Web.UI.Page 
  18.     protected void Page_Load(object sender, EventArgs e) 
  19.     { 
  20.         DownLoadExcel(); 
  21.     } 
  22.  
  23.     /// <summary> 
  24.     /// 下载Excel 
  25.     /// </summary> 
  26.     public void DownLoadExcel() 
  27.     { 
  28.         /*
  29.          * ①:输出文档
  30.          */ 
  31.         string fileName = DateTime.Now.ToString("yyyyMMdd") + "测试.xls"
  32.  
  33.         string UserAgent = Request.ServerVariables["http_user_agent"].ToLower(); 
  34.         // Firfox和IE下输出中文名显示正常 
  35.         if (UserAgent.IndexOf("firefox") == -1) 
  36.         { 
  37.             fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8); 
  38.         } 
  39.  
  40.         Response.ContentType = "application/vnd.ms-excel;charset=UTF-8"
  41.         Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", fileName)); 
  42.         Response.Clear(); 
  43.         //写入内容到Excel 
  44.         HSSFWorkbook hssfworkbook = writeToExcel(); 
  45.         //将Excel内容写入到流中 
  46.         MemoryStream file = new MemoryStream(); 
  47.         hssfworkbook.Write(file); 
  48.         //输出 
  49.         Response.BinaryWrite(file.GetBuffer()); 
  50.         Response.End(); 
  51.  
  52.         /*
  53.          * ②:将文档保存到指定路径
  54.          */ 
  55.         string destFileName = @"D:\test.xls"
  56.         HSSFWorkbook hssfworkbook2 = writeToExcel(); 
  57.         MemoryStream msfile = new MemoryStream(); 
  58.         hssfworkbook.Write(msfile); 
  59.         System.IO.File.WriteAllBytes(destFileName, msfile.ToArray()); 
  60.     } 
  61.  
  62.     /// <summary> 
  63.     /// 写入内容到Excel中 
  64.     /// </summary> 
  65.     /// <returns></returns> 
  66.     private HSSFWorkbook writeToExcel() 
  67.     { 
  68.         //string template = "模板路径.xls"; 
  69.         //FileStream file = new FileStream(template, FileMode.Open, FileAccess.Read); 
  70.         //HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);// 创建对象 
  71.         //HSSFSheet excelSheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);// 获得sheet 
  72.  
  73.         HSSFWorkbook hssfworkbook = new HSSFWorkbook(); 
  74.  
  75.         HSSFSheet excelSheet = (HSSFSheet)hssfworkbook.CreateSheet("sheet1"); 
  76.  
  77.         Row row0 = excelSheet.CreateRow(0); 
  78.         Cell cell0 = CreateCell(0, row0); 
  79.         cell0.SetCellValue("NUM"); 
  80.         cell0.CellStyle = GetCellStyle(hssfworkbook, CellBorderType.THIN, CellBorderType.THIN, CellBorderType.THIN, CellBorderType.THIN, HSSFColor.LIGHT_YELLOW.index, "#,##0"); 
  81.  
  82.         for (int i = 100, j = 1; i < 10000; i++, j++) 
  83.         { 
  84.             Row row = CreateRow(j, excelSheet); 
  85.             Cell cell = CreateCell(0, row); 
  86.             cell.SetCellValue(i); 
  87.             cell.CellStyle = GetCellStyle(hssfworkbook, CellBorderType.THIN, CellBorderType.THIN, CellBorderType.THIN, CellBorderType.THIN, HSSFColor.LIGHT_GREEN.index, "#,##0"); 
  88.         } 
  89.  
  90.         return hssfworkbook; 
  91.     } 
  92.  
  93.  
  94.     /// <summary> 
  95.     /// 设置样式 
  96.     /// </summary> 
  97.     /// <param name="hssfworkbook"></param> 
  98.     /// <param name="borderLeft">左边框</param> 
  99.     /// <param name="borderBottom">下边框</param> 
  100.     /// <param name="borderRight">右边框</param> 
  101.     /// <param name="borderTop">上边框</param> 
  102.     /// <param name="fillforgeroundColor">背景填充色</param> 
  103.     /// <param name="dataFormat">数据格式</param> 
  104.     /// <returns></returns> 
  105.     private CellStyle GetCellStyle(HSSFWorkbook hssfworkbook 
  106.         , CellBorderType borderLeft, CellBorderType borderBottom, CellBorderType borderRight, CellBorderType borderTop 
  107.         , short fillforgeroundColor 
  108.         , string dataFormat) 
  109.     { 
  110.         CellStyle styleInfo = hssfworkbook.CreateCellStyle(); 
  111.  
  112.         styleInfo.BorderLeft = borderLeft; 
  113.         styleInfo.BorderBottom = borderBottom; 
  114.         styleInfo.BorderRight = borderRight; 
  115.         styleInfo.BorderTop = borderTop; 
  116.  
  117.         styleInfo.Alignment = HorizontalAlignment.CENTER; 
  118.         styleInfo.VerticalAlignment = VerticalAlignment.CENTER; 
  119.  
  120.         styleInfo.FillForegroundColor = fillforgeroundColor;//设置填充色 
  121.         styleInfo.FillPattern = FillPatternType.SOLID_FOREGROUND;//设置填充色的时候必须设置这个 
  122.  
  123.         styleInfo.DataFormat = HSSFDataFormat.GetBuiltinFormat(dataFormat); 
  124.         // 当前日期格式的需要以下这样设置 
  125.         //HSSFDataFormat format = (HSSFDataFormat)hssfworkbook.CreateDataFormat(); 
  126.         //styleInfo.DataFormat = format.GetFormat("yyyy年m月d日"); 
  127.  
  128.         return styleInfo; 
  129.     } 
  130.  
  131.     /// <summary> 
  132.     /// 创建行对象 
  133.     /// </summary> 
  134.     /// <param name="rowID"></param> 
  135.     /// <param name="excelSheet"></param> 
  136.     /// <returns></returns> 
  137.     private Row CreateRow(int rowID, HSSFSheet excelSheet) 
  138.     { 
  139.         Row row = excelSheet.GetRow(rowID); 
  140.         if (row == null
  141.         { 
  142.             row = excelSheet.CreateRow(rowID); 
  143.         } 
  144.         return row; 
  145.     } 
  146.  
  147.     /// <summary> 
  148.     /// 创建列对象 
  149.     /// </summary> 
  150.     /// <param name="rowID"></param> 
  151.     /// <param name="excelSheet"></param> 
  152.     /// <returns></returns> 
  153.     private Cell CreateCell(int cellID, Row row) 
  154.     { 
  155.         Cell cell = row.GetCell(cellID); 
  156.         if (cell == null
  157.         { 
  158.             cell = row.CreateCell(cellID); 
  159.         } 
  160.         return cell; 
  161.     } 
  162.  
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;using System.IO;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;public partial class _Default : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){DownLoadExcel();}/// <summary>/// 下载Excel/// </summary>public void DownLoadExcel(){/** ①:输出文档*/string fileName = DateTime.Now.ToString("yyyyMMdd") + "测试.xls";string UserAgent = Request.ServerVariables["http_user_agent"].ToLower();// Firfox和IE下输出中文名显示正常if (UserAgent.IndexOf("firefox") == -1){fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);}Response.ContentType = "application/vnd.ms-excel;charset=UTF-8";Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", fileName));Response.Clear();//写入内容到ExcelHSSFWorkbook hssfworkbook = writeToExcel();//将Excel内容写入到流中MemoryStream file = new MemoryStream();hssfworkbook.Write(file);//输出Response.BinaryWrite(file.GetBuffer());Response.End();/** ②:将文档保存到指定路径*/string destFileName = @"D:\test.xls";HSSFWorkbook hssfworkbook2 = writeToExcel();MemoryStream msfile = new MemoryStream();hssfworkbook.Write(msfile);System.IO.File.WriteAllBytes(destFileName, msfile.ToArray());}/// <summary>/// 写入内容到Excel中/// </summary>/// <returns></returns>private HSSFWorkbook writeToExcel(){//string template = "模板路径.xls";//FileStream file = new FileStream(template, FileMode.Open, FileAccess.Read);//HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);// 创建对象//HSSFSheet excelSheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);// 获得sheetHSSFWorkbook hssfworkbook = new HSSFWorkbook();HSSFSheet excelSheet = (HSSFSheet)hssfworkbook.CreateSheet("sheet1");Row row0 = excelSheet.CreateRow(0);Cell cell0 = CreateCell(0, row0);cell0.SetCellValue("NUM");cell0.CellStyle = GetCellStyle(hssfworkbook, CellBorderType.THIN, CellBorderType.THIN, CellBorderType.THIN, CellBorderType.THIN, HSSFColor.LIGHT_YELLOW.index, "#,##0");for (int i = 100, j = 1; i < 10000; i++, j++){Row row = CreateRow(j, excelSheet);Cell cell = CreateCell(0, row);cell.SetCellValue(i);cell.CellStyle = GetCellStyle(hssfworkbook, CellBorderType.THIN, CellBorderType.THIN, CellBorderType.THIN, CellBorderType.THIN, HSSFColor.LIGHT_GREEN.index, "#,##0");}return hssfworkbook;}/// <summary>/// 设置样式/// </summary>/// <param name="hssfworkbook"></param>/// <param name="borderLeft">左边框</param>/// <param name="borderBottom">下边框</param>/// <param name="borderRight">右边框</param>/// <param name="borderTop">上边框</param>/// <param name="fillforgeroundColor">背景填充色</param>/// <param name="dataFormat">数据格式</param>/// <returns></returns>private CellStyle GetCellStyle(HSSFWorkbook hssfworkbook, CellBorderType borderLeft, CellBorderType borderBottom, CellBorderType borderRight, CellBorderType borderTop, short fillforgeroundColor, string dataFormat){CellStyle styleInfo = hssfworkbook.CreateCellStyle();styleInfo.BorderLeft = borderLeft;styleInfo.BorderBottom = borderBottom;styleInfo.BorderRight = borderRight;styleInfo.BorderTop = borderTop;styleInfo.Alignment = HorizontalAlignment.CENTER;styleInfo.VerticalAlignment = VerticalAlignment.CENTER;styleInfo.FillForegroundColor = fillforgeroundColor;//设置填充色styleInfo.FillPattern = FillPatternType.SOLID_FOREGROUND;//设置填充色的时候必须设置这个styleInfo.DataFormat = HSSFDataFormat.GetBuiltinFormat(dataFormat);// 当前日期格式的需要以下这样设置//HSSFDataFormat format = (HSSFDataFormat)hssfworkbook.CreateDataFormat();//styleInfo.DataFormat = format.GetFormat("yyyy年m月d日");return styleInfo;}/// <summary>/// 创建行对象/// </summary>/// <param name="rowID"></param>/// <param name="excelSheet"></param>/// <returns></returns>private Row CreateRow(int rowID, HSSFSheet excelSheet){Row row = excelSheet.GetRow(rowID);if (row == null){row = excelSheet.CreateRow(rowID);}return row;}/// <summary>/// 创建列对象/// </summary>/// <param name="rowID"></param>/// <param name="excelSheet"></param>/// <returns></returns>private Cell CreateCell(int cellID, Row row){Cell cell = row.GetCell(cellID);if (cell == null){cell = row.CreateCell(cellID);}return cell;}}


最近被Excel的給整疯了。

整理一下,希望可以给人帮助!

这篇关于NPOI 生成Excel 的——常用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/880964

相关文章

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.