ExcelHandle
using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Web;namespace MVCStudy.Helper {public class ExcelHandle{/// <summary> /// 将DataTable数据导出到Excel文件中(xlsx) /// </summary> /// <param name="dt">数据源</param> /// <param name="excelName">文件名称</param> public static void TableToExcelForXLSX(DataTable dt, string excelName){XSSFWorkbook xssfworkbook = new XSSFWorkbook();ISheet sheet = xssfworkbook.CreateSheet("Test");//表头 IRow row = sheet.CreateRow(0);for (int i = 0; i < dt.Columns.Count; i++){ICell cell = row.CreateCell(i);cell.SetCellValue(dt.Columns[i].ColumnName);}//数据 for (int i = 0; i < dt.Rows.Count; i++){IRow row1 = sheet.CreateRow(i + 1);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = row1.CreateCell(j);cell.SetCellValue(dt.Rows[i][j].ToString());}}HttpContext curContext = HttpContext.Current;curContext.Response.Clear();curContext.Response.ContentType = "application/x-excel";string filename = HttpUtility.UrlEncode(excelName + DateTime.Now.ToString("yyyyMMddHHmm") + ".xlsx");curContext.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);xssfworkbook.Write(curContext.Response.OutputStream);curContext.Response.End();}/// <summary>/// 读取excel(版本不低于2007)至DataTable/// </summary>/// <param name="file"></param>/// <returns></returns>public static DataTable ExcelToTableForXLSX(string file){DataTable dt = new DataTable();using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)){XSSFWorkbook xssfworkbook = new XSSFWorkbook(fs);ISheet sheet = xssfworkbook.GetSheetAt(0);//表头 IRow header = sheet.GetRow(sheet.FirstRowNum);List<int> columns = new List<int>();for (int i = 0; i < header.LastCellNum; i++){object obj = GetValueTypeForXLSX(header.GetCell(i) as XSSFCell);if (obj == null || obj.ToString() == string.Empty){dt.Columns.Add(new DataColumn("Columns" + i.ToString()));}elsedt.Columns.Add(new DataColumn(obj.ToString()));columns.Add(i);}//数据 for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++){DataRow dr = dt.NewRow();bool hasValue = false;foreach (int j in columns){dr[j] = GetValueTypeForXLSX(sheet.GetRow(i).GetCell(j) as XSSFCell);if (dr[j] != null && dr[j].ToString() != string.Empty){hasValue = true;}}if (hasValue){dt.Rows.Add(dr);}}}return dt;}/// <summary> /// 获取单元格类型(xlsx) /// </summary> /// <param name="cell"></param> /// <returns></returns> private static object GetValueTypeForXLSX(XSSFCell cell){if (cell == null)return null;switch (cell.CellType){case CellType.Blank: //BLANK: return null;case CellType.Boolean: //BOOLEAN: return cell.BooleanCellValue;case CellType.Numeric: //NUMERIC: return cell.NumericCellValue;case CellType.String: //STRING: return cell.StringCellValue;case CellType.Error: //ERROR: return cell.ErrorCellValue;case CellType.Formula: //FORMULA: default:return "=" + cell.CellFormula;}}/// <summary>/// 将List导出到Excel/// </summary>/// <param name="enList">List数据</param>/// <param name="fileName">Excel文件名</param>/// <param name="sheetName">Excel工作表名</param>/// <param name="cell0Value">首行提示信息</param>public void IListToExcel( IList enList, string fileName, string sheetName,string cell0Value){IWorkbook workbook = new XSSFWorkbook();ISheet sheet = workbook.CreateSheet(sheetName);sheet.CreateRow(0).CreateCell(0).SetCellValue(cell0Value);List<string> Ihead = new List<string>();Type types = enList[0].GetType();foreach(var item in types.GetProperties()){Ihead.Add(item.Name);}IRow row1 = sheet.CreateRow(1);for (int i = 0; i < Ihead.Count; i++){row1.CreateCell(i).SetCellValue(Ihead[i]);}int rowIndex = 2;foreach (var item in enList){IRow rowTmp = sheet.CreateRow(rowIndex);for (int i = 0; i < Ihead.Count; i++){System.Reflection.PropertyInfo properotyInfo = item.GetType().GetProperty(Ihead[i]); // 属性的信息object properotyValue = properotyInfo.GetValue(item, null);// 属性的值string cellValue = properotyValue.ToString()??null;// 单元格的值 rowTmp.CreateCell(i).SetCellValue(cellValue);}rowIndex++;}using (FileStream file = new FileStream(fileName, FileMode.Create)){workbook.Write(file);file.Close();}}} }
转载于:https://www.cnblogs.com/fuxuyang/p/7210930.html
ExcelHandle相关推荐
- 浅谈python+requests实现接口自动化
前言 今年2月调去支持项目接口测试,测试过程中使用过postman.jmeter工具,基本能满足使用,但是部分情况下使用较为麻烦. 比如:部分字段存在唯一性校验或字段间有业务性校验,每次请求均需手工修 ...
- Python将py文件生成exe文件
使用PyCham软件运行生成可执行文件后,最完美的就是将py文件生成exe文件,这样可以任意复制移植到其他电脑上,供他人共享. 由于新手初步尝试,自己一个人摸索,遇到了很多坑.这里先给出最简单有效的方 ...
- JAVA EXCEL API(jxl)简介
Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该 API非 Windows操作系统也可以通过纯Ja ...
- python读取excel,数字都是浮点型,日期格式是数字的解决办法
excel文件内容: 读取excel: # coding=utf-8 import xlrd import sysreload(sys) sys.setdefaultencoding('utf-8') ...
- 基于Spring开发的DUBBO服务接口测试
基于Spring开发的DUBBO服务接口测试 知识共享主要内容: 1. Dubbo相关概念和架构,以及dubbo服务程序开发步骤. 2. 基于Spring开发框架的dubbo服务接口测试相关配置. 3 ...
- 经常需要在开发中使用Excel COM,为简化使用写了这个类,感觉还是不太方便
1using System; 2 3namespace ExcelHandle 4{ 5 /**//// <summary> 6 /// ExcelHan ...
- Excel数据导入数据库(Java)
Excel 文件数据导入数据库 首先说明下读写Excel三种常用的技术: POI : 效率高,操作相对JXL复杂,支持公式,宏,图像图表,一些企业应用上会比较实用.能够修饰单元格属性.字体 数字 日期 ...
- 关于JXL读写以及修改EXCEL文件转
首先引用网上的文章,谈谈JXL与POI的区别 POI为apache公司的一个子项目,主要是提供一组操作windows文档的Java API. Java Excel俗称jxl是一开放源码项目,通过它J ...
- Java生成和操作Excel文件
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...
最新文章
- 用python打造一款文件搜索工具,所有功能自己定义!
- 美团爱问Kafka?太真实了!
- 尚硅谷谷粒学院2020 高级篇代码_尚硅谷联合KubeSphere ,共同打造企业级云原生课程!...
- 信息安全系统设计基础第十五周总结
- .net项目开发工具最新动态
- ESP8266固件烧录软件flash_download_tools的安装过程
- 司空见惯 - 英雄扫雷鼠
- 弹出启动windows安全中心服务器,Win10每次开机都弹出启用Windows安全中心服务怎么办?...
- rtx2060为什么叫智商卡_作为世界上智商最低的狗种之一,中华田园犬是否“名副其实”?...
- XMU 1612 刘备闯三国之桃园结义 【二分】
- R语言绘制带误差和可信区间的折线图
- 创建简易的金融数据库
- 深度理解面向对象的基础-抽象(一)
- wifi mesh组网
- 【论文笔记】MultiPath: Multiple Probabilistic Anchor TrajectoryHypotheses for Behavior Prediction
- 查看zookeeper的版本号
- 文件扩展名有误?怎么批量修改文件扩展名?
- win10计算机导航栏怎么删除,如何自定义导航栏?win10资源管理器导航栏删除多余选项的操作方法...
- 保姆的式教程手把手教你,菜鸟玩转博客搭建!
- 不想丧班?BOSS直聘包场邀你免费嗨唱一夜 | 互联网行业公会
热门文章
- 一图解惑SQL JOINS
- golang *time.Time类型转*timestamppb.Timestamp
- redis专题:redis缓存穿透、缓存击穿、缓存雪崩等问题如何解决?
- CentOS离线安装gcc4.8.2 + 并安装网卡驱动
- Python精通-运算符与基本数据类型(一)
- OSTaskDelReq()--请求删除任务函数
- Eureka实例自动过期
- java模拟多线程买票问题
- (四十九)java SpringCloud版本b2b2c鸿鹄云商平台全套解决方案
- 字符串拷贝记得strcpy