using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using NPOI.HPSF;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
namespace WebApplicationNopi
{
public class ExcelHelper
{
private static MemoryStream WriteToStream(HSSFWorkbook hssfworkbook)
{
//Write the stream data of workbook to the root directory
MemoryStream file = new MemoryStream();
hssfworkbook.Write(file);
return file;
}
//Export(DataTable table, string headerText, string sheetName, string[] columnName, string[] columnTitle)
/// <summary>
/// 向客户端输出文件。
/// </summary>
/// <param name="table">数据表。</param>
/// <param name="headerText">头部文本。</param>
/// <param name="sheetName"></param>
/// <param name="columnName">数据列名称。</param>
/// <param name="columnTitle">表标题。</param>
/// <param name="fileName">文件名称。</param>
public static void Write(HttpContext context, DataTable table, string headerText, string sheetName, string[] columnName, string[] columnTitle, string fileName)
{
context.Response.Clear();
context.Response.AddHeader("Content-Disposition",
"attachment; filename=" + fileName); //HttpUtility.UrlEncode(fileName));
context.Response.ContentType = "application/vnd.ms-excel";
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
GenerateData(hssfworkbook, table, headerText, sheetName, columnName, columnTitle);
context.Response.BinaryWrite(WriteToStream(hssfworkbook).GetBuffer());
context.Response.End();
}
/// <summary>
/// 向客户端输出文件
/// </summary>
/// <param name="context"></param>
/// <param name="list">数据表列表</param>
/// <param name="headerText">头部文本</param>
/// <param name="sheetNameList">数据列名称集合</param>
/// <param name="columnName">表标题集合</param>
/// <param name="columnTitle">表标题集合</param>
/// <param name="fileName">文件名称</param>
public static void Write(HttpContext context, List<DataTable> list, string headerText, string[] sheetNameList, List<string[]> columnName, List<string[]> columnTitle, string fileName)
{
context.Response.Clear();
context.Response.AddHeader("Content-Disposition",
"attachment; filename=" + fileName); //HttpUtility.UrlEncode(fileName));
context.Response.ContentType = "application/vnd.ms-excel";
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
for (int i = 0; i < sheetNameList.Length; i++)
{
GenerateData(hssfworkbook, list[i], headerText, sheetNameList[i], columnName[i], columnTitle[i]);
}
context.Response.BinaryWrite(WriteToStream(hssfworkbook).GetBuffer());
context.Response.End();
}
/// <summary>
///
/// </summary>
/// <param name="table"></param>
/// <param name="headerText"></param>
/// <param name="sheetName"></param>
/// <param name="columnName"></param>
/// <param name="columnTitle"></param>
/// <returns></returns>
public static HSSFWorkbook GenerateData(HSSFWorkbook hssfworkbook, DataTable table, string headerText, string sheetName, string[] columnName, string[] columnTitle)
{
//HSSFWorkbook hssfworkbook = new HSSFWorkbook();
ISheet sheet = hssfworkbook.CreateSheet(sheetName);
#region 设置文件属性信息
//创建一个文档摘要信息实体。
DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
dsi.Company = "Net"; //公司名称
hssfworkbook.DocumentSummaryInformation = dsi;
//创建一个摘要信息实体。
SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
si.Subject = "本文档由 JINS OA系统生成";
si.Author = "licao";
si.Title = headerText;
si.Subject = headerText;
si.CreateDateTime = DateTime.Now;
hssfworkbook.SummaryInformation = si;
#endregion 设置文件属性信息
ICellStyle dateStyle = hssfworkbook.CreateCellStyle();
IDataFormat format = hssfworkbook.CreateDataFormat();
dateStyle.DataFormat = format.GetFormat("@");
#region 取得列宽
int[] colWidth = new int[columnName.Length];
for (int i = 0; i < columnName.Length; i++)
{
colWidth[i] = Encoding.GetEncoding(936).GetBytes(columnTitle[i]).Length;
}
for (int i = 0; i < table.Rows.Count; i++)
{
for (int j = 0; j < columnName.Length; j++)
{
int intTemp = Encoding.GetEncoding(936).GetBytes(table.Rows[i][columnName[j]].ToString()).Length;
if (intTemp > colWidth[j])
{
C# NOPI实现导出 类
最新推荐文章于 2024-08-16 15:01:39 发布