NPOI导出Excel帮助类
2024-10-15 21:35:08
工具类
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);
最新文章
- vim正则表达式~转
- Extjs swfUpload 多图片上传
- Java提高篇(三三)-----Map总结
- clock gating and PLL
- python datetime 时间日期处理小结
- PYTHON:HTTP头设置工具(以附件名为例)
- VOA学习-South Sudan Must Allow Aid
- 我是这样发现ISP劫持HTTP请求的
- Webpack 2 视频教程 018 - 使用可视化图表进行统计分析打包过程
- [HAOI2008]木棍分割
- Android Studio 日志工具
- mybtis逆向工程实战教程--条件查询
- python学习笔记(3)--turtle简单绘制
- Python全栈之路----Python2与Python3
- H3C ER6300 + 两台 H3C S5120 组网举例
- distinct aggregation
- GreenPlum数据加载
- log parser 微软iis 日志分析
- Charles安装包及破解包下载地址
- 导入tensorflow:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or director【转】