NPOI 导入 导出
using NPOI.XSSF.UserModel;
using System.IO;
导入
/// <summary>
/// Excel转换DataTable
/// </summary>
/// <param name="FilePath">文件的绝对路径</param>
/// <returns>DataTable</returns>
public static DataTable ExcelInput(string FilePath)
{
//第一行一般为标题行。
DataTable table = new DataTable();
//根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档
XSSFWorkbook hssfworkbook;
using (FileStream file = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
{
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = (XSSFSheet)workbook.GetSheetAt(0);
//获取excel的第一个sheet
//获取Excel的最大行数
int rowsCount = sheet.PhysicalNumberOfRows; //为保证Table布局与Excel一样,这里应该取所有行中的最大列数(需要遍历整个Sheet)。
//为少一交全Excel遍历,提高性能,我们可以人为把第0行的列数调整至所有行中的最大列数。
int colsCount = sheet.GetRow(0).PhysicalNumberOfCells;
for (int i = 0; i < colsCount; i++)
{
table.Columns.Add(i.ToString());
}
for (int x = 0; x < rowsCount; x++)
{ DataRow dr = table.NewRow();
for (int y = 0; y < colsCount; y++)
{
var row = sheet.GetRow(x);
if (row != null)
{
var column = row.GetCell(y);
if (column != null)
{
dr[y] = sheet.GetRow(x).GetCell(y).ToString();
}
}
}
table.Rows.Add(dr);
}
sheet = null;
workbook = null;
}
return table;
}
导出
[Ajax] public AjaxResult ExportWithdrawExcel(int id) { bool ifSuccess = false; string msg = ""; string templatePath = Server.MapPath("\\Content\\template\\WithdrawInfo.xlsx"); string resultPath = ""; try { var entity = _withdrawRequestService.GetYstObjById(id); WithdrawRequestModel requestModel = entity.ToModel(); resultPath = "\\Content\\template\\" + requestModel.BillCode + "_" + DateTime.Now.Second + ".xlsx"; string savePath = Server.MapPath(resultPath); IWorkbook exportFile = new XSSFWorkbook(templatePath);
ISheet sheet1 = exportFile.GetSheet("相关提现订单"); var list = _withdrawOrderListService.GetWithdrawOrderListByWithdrawRequestId(requestModel.Id); var modelList = new List<WithdrawOrderListModel>(); foreach (var item in list) { var model = new WithdrawOrderListModel(); if (item != null) { model = item.ToModel(); } modelList.Add(model); } var gt = modelList.ToArray();
System.Data.DataTable dt = IListOut(modelList); int rowCount = dt.Rows.Count; int colCount = dt.Columns.Count; object[,] dataArray = new object[rowCount + 1, colCount]; for (int j = 0; j < rowCount; j++) { IRow row = sheet1.CreateRow(j + 12); for (int i = 0; i < colCount; i++) {
switch (dt.Columns[i].ColumnName) { case "EndDate": { row.CreateCell(0).SetCellValue(dt.Rows[j][i].ToString()); break; } case "UserName": { row.CreateCell(1).SetCellValue(dt.Rows[j][i].ToString()); break; } case "BankName": { row.CreateCell(2).SetCellValue(dt.Rows[j][i].ToString()); break; } case "OrgId": { row.CreateCell(3).SetCellValue(dt.Rows[j][i].ToString()); break; } case "CardNo": { row.CreateCell(4).SetCellValue(dt.Rows[j][i].ToString()); break; } case "Amount": { row.CreateCell(5).SetCellValue(dt.Rows[j][i].ToString()); break; } case "CreateDate": { row.CreateCell(6).SetCellValue(dt.Rows[j][i].ToString()); break; } case "WithdrawTypeShow": { row.CreateCell(7).SetCellValue(dt.Rows[j][i].ToString()); break; } case "OrderCode": { row.CreateCell(8).SetCellValue(dt.Rows[j][i].ToString()); break; } case "OrderTitle": { row.CreateCell(9).SetCellValue(dt.Rows[j][i].ToString()); break; } case "UserTypeShow": { row.CreateCell(10).SetCellValue(dt.Rows[j][i].ToString()); break; } case "UniqueCode": { row.CreateCell(11).SetCellValue(dt.Rows[j][i].ToString()); break; } } } } sheet1.GetRow(1).GetCell(1).SetCellValue(requestModel.BillCode.ToString()); sheet1.GetRow(2).GetCell(1).SetCellValue(requestModel.WithdrawTypeShow.ToString()); sheet1.GetRow(3).GetCell(1).SetCellValue(requestModel.Creator.ToString()); sheet1.GetRow(4).GetCell(1).SetCellValue(requestModel.SubmitMan.ToString()); sheet1.GetRow(5).GetCell(1).SetCellValue(requestModel.CheckMan.ToString()); sheet1.GetRow(6).GetCell(1).SetCellValue(requestModel.AuditMan.ToString()); sheet1.GetRow(7).GetCell(1).SetCellValue(requestModel.CheckMan.ToString()); sheet1.GetRow(6).GetCell(1).SetCellValue(requestModel.Remark.ToString()); sheet1.GetRow(1).GetCell(5).SetCellValue(requestModel.BillDate.ToString()); sheet1.GetRow(2).GetCell(5).SetCellValue(requestModel.BillAmount.ToString()); sheet1.GetRow(3).GetCell(5).SetCellValue(requestModel.CreatedOnUTC.ToString()); sheet1.GetRow(4).GetCell(5).SetCellValue(requestModel.SubmitDate.ToString()); sheet1.GetRow(5).GetCell(5).SetCellValue(requestModel.CheckDate.ToString()); sheet1.GetRow(6).GetCell(5).SetCellValue(requestModel.AuditDate.ToString());
FileStream sw = System.IO.File.Create(savePath); exportFile.Write(sw); sw.Close(); ifSuccess = true; } catch (Exception e) { msg = e.Message; if (e.InnerException != null) msg += e.InnerException.Message; } JsonSerializerSettings js = new JsonSerializerSettings(); js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; return new AjaxResult(ifSuccess, JsonConvert.SerializeObject(resultPath, Formatting.Indented, js), msg);
}
NPOI 导入 导出的更多相关文章
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- NPOI导入导出Excel
.net mvc利用NPOI导入导出excel 注意:如何导出的提交方式ajax导出是失效的! 解决方案是:js处理l两个表单的提交 代码: 第一步. 在页面里面加入2个隐藏的iframe, 如下 ...
- .Net core NPOI导入导出Excel
最近在想.net core NPOI 导入导出Excel,一开始感觉挺简单的,后来真的遇到很多坑.所以还是写一篇博客让其他人少走一些弯路,也方便忘记了再重温一遍.好了,多的不说,直接开始吧. 在.Ne ...
- c#.net 使用NPOI导入导出标准Excel (asp.net winform csharp)
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- 使用NPOI导入导出标准的Excel
关于NPOI NPOI是POI项目的.NET版本,是由@Tony Qu(http://tonyqus.cnblogs.com/)等大侠基于POI开发的,可以从http://npoi.codeplex. ...
- ASP.NET- 使用NPOI导入导出标准Excel
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- 使用NPOI导入导出标准Excel
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- NPOI导入导出Excel数据
代码: using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; usi ...
- net core WebApi——使用NPOI导入导出操作
目录 前言 NPOI 测试 小结 @ 前言 时间过得好快,在之前升级到3.0之后,就感觉好久没再动过啥东西了,之前有问到Swagger的中文汉化,虽说我觉得这种操作的意义不是太大,也是多少鼓捣了下,其 ...
随机推荐
- VC驿站黑客编程(关机,重新启动,注销)
此程序在VS2013下编译通过,假设换到编译器,大家能够稍作改动使用 #include<Windows.h> #include<tchar.h> #include"r ...
- 使用maven结合requirejs管理前端脚本
已有的web项目,一直使用Maven做工程管理,现阶段前端调整为使用requirejs来负责模块加载依赖,同时使用jasmine来完成前端的UT. 便与在maven下统一管理,简单整理了下合在一起的使 ...
- Django学习之网站图标
首先,你要有一个.ico的文件,可以从easy icon直接搜索一个图标. 1.先导入RedirectView,是一个通用类视图. from django.views.generic.base imp ...
- unity free asset
Unity Test Tools https://www.assetstore.unity3d.com/#/content/13802 Sample Assets (beta) https://www ...
- Windows Service的转换与部署
开发Windows Service,可能会碰到以下两种情况. 1. 直接开发一个Windows Service 网上有很多教程,可以参考这个: http://www.cnblogs.com/sorex ...
- Scrapy爬虫入门系列4抓取豆瓣Top250电影数据
豆瓣有些电影页面需要登录才能查看. 目录 [隐藏] 1 创建工程 2 定义Item 3 编写爬虫(Spider) 4 存储数据 5 配置文件 6 艺搜参考 创建工程 scrapy startproj ...
- Microsoft SQL Server JDBC 驱动程序支持矩阵
本页包含 Microsoft SQL Server JDBC 驱动程序的支持矩阵和支持生命周期策略. Microsoft JDBC 驱动程序支持生命周期矩阵和策略 Microsoft 支持生命周期 ( ...
- day4笔记
今日讲解内容:1,int数字:运算.1 ,2,3... # 数字类型:int #范围.用于运算, + - * / // %.... bit_lenth :十进制数字用二进制表示的最小位数 a=10 p ...
- Android无线测试之—UiAutomator UiDevice API介绍五
屏幕旋转 一.屏幕旋转相关知识: 1)旋转方向:0度,90度(向左转),180度,270度(向右转) 2)重力感应器:重力感应器是旋转所依靠的 3)固定位置:指将屏幕方向固定在0度,90度或者180度 ...
- 【BZOJ4199】[Noi2015]品酒大会 后缀数组+并查集
[BZOJ4199][Noi2015]品酒大会 题面:http://www.lydsy.com/JudgeOnline/wttl/thread.php?tid=2144 题解:听说能用SAM?SA默默 ...