工具类

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. 使用chttpfile的一个错误

    先贴一部分代码 CString strHttpName="http://localhost/TestReg/RegForm.aspx"; // 需要提交数据的页面 CString ...

  2. vc++基础班[23]---文件夹的基本操作

      ①.文件夹的创建:CreateDirectory ※※※ 注意:此函数只能创建一层目录,比如想在 C 盘下的 Temp 目录下创建新目录为:123 那么前提是 Temp 这个目录存在才可以!   ...

  3. web页面加载、解析、渲染过程

    仅做学习参考,侵权删 原文链接:风吹De麦浪   https://www.cnblogs.com/CandyManPing/p/6635008.html 一.浏览器 浏览器的主要功能是将用户选择的we ...

  4. SpringMVC拦截器(慕课网)

    拦截器:通过统一拦截从浏览器发往服务器的请求来完成功能的增强 使用场景:解决请求的共性问题 如:乱码.权限验证 基本工作原理:拦截器和过滤器的工作原理相似 乱码问题:使用Spring过滤器(Filte ...

  5. Ex 2_22 两个有序列表合并后的第k小元素..._第四次作业

    package org.xiu68.ch02; public class Ex2_22 { public static void main(String[] args) { // TODO Auto- ...

  6. JGroups

    JGroups Developer(s) Bela Ban Stable release 4.0.10.Final / February 1, 2018 Written in Java Operati ...

  7. Python-数据库 基本SQL语句

    1. 数据库是什么 2. MySQL安装 3. 用户授权 4. 数据库操作 - 数据表 - 数据类型 - 是否可以为空 - 自增 - 主键 - 外键 - 唯一索引 数据行 增 删 改 查 排序: or ...

  8. css之坑

    1.background-size要放在background后边才会生效. 2.隐藏滚动条,内容可以滑动 body::-webkit-scrollbar { display: none /* 隐藏滚动 ...

  9. ie.360,qq浏览器这种ie内核浏览器默认阻止弹窗

  10. vue install后出现的问题

    出现这个问题你要先把node-sass移除后重新安装 执行下面命令 npm remove node-sass --save-dev 然后安装 npm install node-sass@latest ...