通用类 对象Excel互转
public class ExcelHelper
{ public void Demo(string filePath)
{
if (File.Exists(filePath)) File.Delete(filePath);
var RootElement = new XLWorkbook();
var workSheet = RootElement.AddWorksheet("Demo");
RootElement.SaveAs(filePath);
}
public void CreatNewFile(string filePath,string workSheetName)
{
if (File.Exists(filePath)) File.Delete(filePath);
var RootElement = new XLWorkbook();
var workSheet = RootElement.AddWorksheet(workSheetName);
RootElement.SaveAs(filePath);
} public List<T> ReadeExcel<T>(string filePath) where T:new()
{
if (!File.Exists(filePath)) throw new Exception("目标文件不存在");
bool result = true;
int index = ;
string Identity = "";
XLWorkbook RootElement = new XLWorkbook(filePath);
List<T> list = new List<T>();
IXLWorksheet workSheet = RootElement.Worksheet();
Dictionary<int, string> keys = new Dictionary<int, string>();
while (result)
{
Identity = (workSheet.Cell(, index).Value + "").Trim();
if (string.IsNullOrEmpty(Identity))result = false;
else keys.Add(index, Identity);index++;
}
result = true;
index = ;
while (result)
{
Identity = workSheet.Cell(index, ).Value + "";
if (string.IsNullOrEmpty(Identity))
{
result = false;
}
else
{
var model = new T();
var t = model.GetType();
foreach (var item in t.GetProperties())
{
var proper = keys.FirstOrDefault(p => p.Value == item.Name);
if (proper.Value == null)
{
item.SetValue(model, "", null);
}
else
{
item.SetValue(model, workSheet.Cell(index, proper.Key).Value + "", null);
}
}
list.Add(model);
index++;
} } return list;
} public bool WriteExcel<T>(List<T> source,string filePath)
{
var type = typeof(T);
CreatNewFile(filePath, type.Name);
XLWorkbook RootElement = new XLWorkbook(filePath);
List<T> list = new List<T>();
IXLWorksheet workSheet = RootElement.Worksheet(type.Name);
int i = ; Dictionary<int, string> keys = new Dictionary<int, string>();
foreach (var item in type.GetProperties())
keys.Add(i++, item.Name); i = ;
foreach (var key in keys)
workSheet.Cell(i, key.Key).Value = key.Value; foreach (var item in source)
{
i++;
type = item.GetType();
foreach (var key in keys)
{
var vaue = type.GetProperty(key.Value);
if (vaue != null)
workSheet.Cell(i, key.Key).Value = vaue.GetValue(item);
else
workSheet.Cell(i, key.Key).Value = "";
}
}
RootElement.Save(); return true;
} }
通用类 对象Excel互转的更多相关文章
- 通用类 对象和XML互转
public class XMLHealper { /// <summary> /// 将自定义对象序列化为XML字符串 /// </summary> /// <para ...
- NPOI MVC 模型导出Excel通用类
通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...
- MVC NPOI Linq导出Excel通用类
之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...
- Excel通用类工具(二)
前言 上一篇中写到了用反射来处理类中的不用的属性,但是Excel的列名还得手动输入,这样还是比较麻烦的,今天这篇就利用自定义注解来解决手动传入列名的问题:其实很简单的,只需要在上一篇的基础上加一个类就 ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- 无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:
无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -000 ...
- XML和对象属性互转的基类
本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对 ...
- C#:导入Excel通用类(CSV格式)
一.引用插件LumenWorks.Framework.IO.dll(CsvReader) 插件下载地址:https://pan.baidu.com/s/1c3kTKli 提取密码 dz7j 二.定义 ...
- C#:导入Excel通用类(Xls格式)
PS:在CSV格式和XLSX格式中有写到通用调用的接口和引用的插件,所以在这个xls格式里面并没有那么详细,只是配上xls通用类. 一.引用插件NPOI.dll.NPOI.OOXML.dll.NPOI ...
随机推荐
- Apollo与ROS
Apollo项目基于ROS,但是对其进行了改造,主要包括下面三个方面: 通信性能优化 去中心化网络拓扑 数据兼容性扩展 通信性能优化 自动驾驶车辆中包含了大量的传感器,这些传感器可能以非常高频的速度产 ...
- springMVC上传
1.页面 2.开始上传按钮对应的JS 3.添加文件按钮的方法,下图中1是从fast中取到的文件名称,2是文件图片的路径 下面就是后台的一些类.方法等 4.bean层,生成的get和set方法我就不写了 ...
- C# 操作Session、Cookie,Url 编码解码工具类WebHelper
using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text ...
- The Apache Tomcat installation at this directory is version 8.5.40. A Tomcat 8.0 installation is expected.
问题描述 Eclipse 配置 Apache Tomcat 8.5.40(8.0.x 以上版本),会报如下错误信息: 解决方法 1)在 Apache Tomcat 的安装目录中找到 lib 目录下的 ...
- hadoop mkdir: Cannot create directory /usr. Name node is in safe mode.
今天在hdfs上面创建文件夹的时候报了:org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name ...
- 非递归并查集——zoj4109
卡常卡的我难受 非递归并查集好像写起来常数小一点 int F[maxn]; int Find(int x){ int r = x; while (F[r] != r)r = F[r]; int i = ...
- Linux安装Discuz
安装lamp环境 安装参考 安装Discuz 1.进入官网 2.进入Discuz! 程序发布 3.选择最新版本 4.进入git地址 5.克隆下载 5. 确认Apache中的DocumentRoot配置 ...
- HTTP协议详解及http1.0与http1.1http2.0的区别
HTTP协议介绍 http(超文本传输协议)是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.特点: (1)支持客户/服务器模式. HTTP是一个客户端和服务器端请 ...
- 论文阅读笔记五十:CornerNet: Detecting Objects as Paired Keypoints(ECCV2018)
论文原址:https://arxiv.org/pdf/1808.01244.pdf github:https://github.com/princeton-vl/CornerNet 摘要 本文提出了目 ...
- 用vue实现点击编辑按钮将li变为可以输入文本的input
<template> <li v-if='flag'><span @click='edit()'>点击一下</span></li> < ...