通用类 对象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 ...
随机推荐
- 如何用java实现一个p2p种子搜索(1)-概念
前言 说句大实话,网上介绍怎么用java实现p2p种子的搜索这种资料不是特别多,大部分都是python的,用python的话就会简单很多,它里面有很多简单方便的包,libtorrent等等,当然你用这 ...
- #10038.A Horrible Poem
#10038.A Horrible Poem 题目传送门 思路解析 既然这道题目在hash板块里,那么自然就可以想到用hash做这道题目. 首先我们可以用hash数组存储字符串的前缀的hash值. 因 ...
- 1、js的基本对象和垃圾回收
js常用的基本类型:Undefined,null,string,number,boolen 还有一种复杂的数据类型 object.判断类型可以用 typeof. 确定值是否是有穷的,isFinite, ...
- json & pickle 模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 dump和load 都各自使用一次 py ...
- mac下Android开发环境的配置
近似一天的时间,终于把Android环境配置好了. 总结:主要问题在于android的网站是国外,下载东西的时候需要vpn才可以.所以会出现各种各样的问题. 环境:Android Studio + S ...
- LR使用web_add_cookie函数进行cookie模拟
1 为什么要使用cookie模拟 从日常项目测试过程中的问题说起.比如要进行论坛中的文件下载功能的测试.我们都知道只有登录用户才能进行下载操作,这样我们的测试过程可能就变成了先登录系统,然后再进 ...
- flutter 解析json
关于flutter 解析json 自己看了几天,最近才大概知道是怎么个情况. 首先 要处理的 是后端返回的数据 ,如果是直接请求的话返回的是json 字符串 然后要把字符串转成对象,有几种方式参考 第 ...
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...
- 关于kafka生产者相关监控指标的理解(未解决)
关于生产者相关的监控指标含义的理解,希望大神帮忙进行确定下. 这边找了官网,看了网上各样的资料,但都无法帮我理解监控项目相关含义. 相关的监控项目是从jconsole获取的,并接入到了 ...
- Excel—数组
SUMPRODUCT(数组求和函数)和SUM是一样的,只不过数组写完公式后需要三键合一出结果(ctrl+shift+enter),用SUMPRODUCT写公式写完直接敲击enter就行了 函数语法:S ...