工具类

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel; namespace Trumgu_BI_PF.Util
{
public static class NpoiHelper
{
/// <summary>
/// dataset导出Excel
/// </summary>
/// <param name="dataSet"></param>
/// <param name="fileFullPath"></param>
public static void ExportToFile(DataSet dataSet, string fileFullPath)
{
var dts = dataSet.Tables.Cast<DataTable>().ToList();
ExportToFile(dts, fileFullPath);
} /// <summary>
/// datatable导出Excel
/// </summary>
/// <param name="dataTable"></param>
/// <param name="fileFullPath"></param>
public static void ExportToFile(DataTable dataTable, string fileFullPath)
{
var dts = new List<DataTable> { dataTable };
ExportToFile(dts, fileFullPath);
} /// <summary>
/// 多个datatable导出Excel
/// </summary>
/// <param name="dataTables"></param>
/// <param name="fileFullPath"></param>
public static void ExportToFile(IEnumerable<DataTable> dataTables, string fileFullPath)
{
IWorkbook workbook = new XSSFWorkbook();
var i = ;
foreach (var dt in dataTables)
{
var sheetName = string.IsNullOrEmpty(dt.TableName) ? "Sheet " + (++i) : dt.TableName;
var sheet = workbook.CreateSheet(sheetName);
var headerRow = sheet.CreateRow();
for (var j = ; j < dt.Columns.Count; j++)
{
var columnName = string.IsNullOrEmpty(dt.Columns[j].ColumnName)
? "Column " + j
: dt.Columns[j].ColumnName;
headerRow.CreateCell(j).SetCellValue(columnName);
} for (var a = ; a < dt.Rows.Count; a++)
{
var dr = dt.Rows[a];
var row = sheet.CreateRow(a + );
for (var b = ; b < dt.Columns.Count; b++)
{
row.CreateCell(b).SetCellValue(dr[b] != DBNull.Value
? dr[b].ToString()
: string.Empty);
}
}
} using (var fs = File.Create(fileFullPath))
{
workbook.Write(fs);
}
} /// <summary>
/// excel导入datatable
/// </summary>
/// <param name="xlsxFile"></param>
/// <returns></returns>
public static List<DataTable> GetDataTablesFrom(string xlsxFile)
{
if (!File.Exists(xlsxFile))
throw new FileNotFoundException("文件不存在"); var result = new List<DataTable>();
Stream stream = new MemoryStream(File.ReadAllBytes(xlsxFile));
IWorkbook workbook = new XSSFWorkbook(stream);
for (var i = ; i < workbook.NumberOfSheets; i++)
{
var dt = new DataTable();
var sheet = workbook.GetSheetAt(i);
var headerRow = sheet.GetRow();
int cellCount = headerRow.LastCellNum;
for (int j = headerRow.FirstCellNum; j < cellCount; j++)
{
var column = new DataColumn(headerRow.GetCell(j).StringCellValue);
dt.Columns.Add(column);
}
var rowCount = sheet.LastRowNum;
for (var a = (sheet.FirstRowNum + ); a < rowCount; a++)
{
var row = sheet.GetRow(a);
if (row == null) continue; var dr = dt.NewRow();
for (int b = row.FirstCellNum; b < cellCount; b++)
{
if (row.GetCell(b) == null) continue;
dr[b] = row.GetCell(b).ToString();
} dt.Rows.Add(dr);
}
result.Add(dt);
}
stream.Close(); return result;
}
}
}

使用方法

NpoiHelper.ExportToFile(dt, path);

NPOI导出Excel帮助类的更多相关文章

  1. MVC NPOI Linq导出Excel通用类

    之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...

  2. NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中

    以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...

  3. NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters

    /******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...

  4. .NET NPOI导出Excel详解

    NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件. 支持的文件格式包括xls, ...

  5. NPOI导出Excel(含有超过65335的处理情况)

    NPOI导出Excel的网上有很多,正好自己遇到就学习并总结了一下: 首先说明几点: 1.Excel2003及一下:后缀xls,单个sheet最大行数为65335 Excel2007 单个sheet ...

  6. NPOI导出excel(带图片)

    近期项目中用到Excel导出功能,之前都是用普通的office组件导出的方法,今天尝试用下NPOI,故作此文以备日后查阅. 1.NPOI官网http://npoi.codeplex.com/,下载最新 ...

  7. NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头

    虽然发表了2篇关于NPOI导出EXCEL的文章,但是最近再次使用的时候,把以前的代码粘贴过来,居然报了一个错误: “服务器无法在发送 HTTP 标头之后追加标头” 后来也查询了很多其他同学的文章,都没 ...

  8. NPOI导出Excel及使用问题

    NPOI导出Excel及使用问题 因为最近公司质管部门提出了一个统计报表的需求:要求导出一个2016及2017年度深圳区域的所有供应商的费用成本计算--一个22列的Excel表,其中还包括多列的合并单 ...

  9. 使用NPOI导出Excel文件

    使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...

随机推荐

  1. Python3学习笔记33-正则表达式

    学习文章传送门 正则表达式是用来匹配字符串的.只要符合规则的字符串.就可以认为匹配了.否则,这个字符串不合法. \d:可以匹配一个数字     ‘00\d’可以匹配001不能匹配00A \w:可以匹配 ...

  2. web服务器上某一中文名文件无法访问

    只需要在此目录下    convmv  -f GBK -t UTF-8 --notest  *.xxx 执行这个命令即可

  3. 关于boost中enable_shared_from_this类的原理分析

    首先要说明的一个问题是:如何安全地将this指针返回给调用者.一般来说,我们不能直接将this指针返回.想象这样的情况,该函数将this指针返回到外部某个变量保存,然后这个对象自身已经析构了,但外部变 ...

  4. 030_CORS深究

    在日常的项目开发时会不可避免的需要进行跨域操作,而在实际进行跨域请求时,经常会遇到类似 No 'Access-Control-Allow-Origin' header is present on th ...

  5. python批量解析域名a记录

    #encoding:utf-8 import requests import json import dns.resolver import sys reload(sys) sys.setdefaul ...

  6. Ex 7_17 考虑如下的网络(其中数字为对应边的容量)...第十三次作业

    (a) 利用ford-fulkerson算法即可求出最大流和最小分割. (b) 剩余网络为 由S可达的顶点为A.B.可达T的顶点为C. (c) 瓶颈边有e(A,C),e(B,C). (d) 下图中不包 ...

  7. iOS9 新功能:Support Universal Links,iOS10 openUrl新函数

    先看官方文档:https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalL ...

  8. 密码正确 mysql无法登陆 red7.3 上安装mysql5.6后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passswd :yes)

    集群需要mysql存储元数据,就在前几天还运行好好的,突然就进不去了......还是太菜,遇到的bug少. 引起这种故障的原因有很多......第一个坑比较多,大部分用户也就用第一个就可以解决问题,我 ...

  9. CSS margin属性取值

    margin表示一个元素的外边距.取值为正值时,表示相对于正常流离邻近元素更远,而取负值时,使其更近 但是,设置margin后,四个方向的表现形式不同 自身发生移动:top.left margin-t ...

  10. R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列

    就是想保存下来,没有其他用意 原博文:http://blog.csdn.net/qq_26898461/article/details/53467968 3. 空间定位与检测     参考信息< ...