通用类 对象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 ...
随机推荐
- 【原创】大叔经验分享(51)docker报错Exited (137)
docker container启动失败,报错:Exited (137) *** ago,比如 Exited (137) 16 seconds ago 这时通过docker logs查不到任何日志,从 ...
- 解决SecureCRT中文版"数据库里没找到防火墙'无'"的错误提示
问题描述: 最近从同事那拷贝到一个中文版的SecureCRT,但是每次打开都会有个防火墙的错误提示,“数据库里没找到防火墙“无”.此会话将尝试不通过防火墙进行连接. 出现这个错误的原因是在Secure ...
- uni-app 在input获取焦点(弹出软键盘后收起软键盘),页面不下滑,留下下方空白
加入收起软键盘时让页面回正 uni.pageScrollTo({ scrollTop: 0, duration: 0 });
- Django models文件模型变更注意事项(表结构的修改)
表结构的修改 1.表结构修改后,原来表中已存在的数据,就会出现结构混乱,makemigrations更新表的时候就会出错 比如第一次建模型,漏了一个字段,后来补上了.(经常遇到模型字段修改) 重新ma ...
- MySQL ERROR 1820 (HY000)
You must reset your password using ALTER USER statement before executing this statement报错处理 解决方式如下: ...
- 基于tkinter的GUI编程
tkinter:tkinter是绑定了Python的TKGUI工具集,就是Python包装的Tcl代码,通过内嵌在Python解释器内部的Tcl解释器实现的,它是Python标准库的一部分,所以使用它 ...
- MySQL 远程连接问题
使用Workbench 无法远程连接Mysql服务器提示如下错误: 查找原因: 显示只能localhost 访问. 解决方法:修改授权远程访问 create user 'root'@'%' ident ...
- 记录下在阿里云linux上安装与配置Mysql
环境:阿里云ECS服务器,系统为centos7.2 用户:root 参考博客:https://blog.csdn.net/kunzai6/article/details/81938613 师兄的哈哈哈 ...
- UI---设置Activity背景为透明
1.在values下colors中设置透明颜色 <?xml version="1.0" encoding="utf-8"?> <resourc ...
- .net基础学java系列(七)赶鸭子上架看项目代码
项目用到的技术栈 序列化 com.alibaba.fastjson.JSON; https://github.com/alibaba/fastjson/wiki/Quick-Start-CN 日志 l ...