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互转的更多相关文章

  1. 通用类 对象和XML互转

    public class XMLHealper { /// <summary> /// 将自定义对象序列化为XML字符串 /// </summary> /// <para ...

  2. NPOI MVC 模型导出Excel通用类

    通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...

  3. MVC NPOI Linq导出Excel通用类

    之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...

  4. Excel通用类工具(二)

    前言 上一篇中写到了用反射来处理类中的不用的属性,但是Excel的列名还得手动输入,这样还是比较麻烦的,今天这篇就利用自定义注解来解决手动传入列名的问题:其实很简单的,只需要在上一篇的基础上加一个类就 ...

  5. NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中

    以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...

  6. 无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:

    无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -000 ...

  7. XML和对象属性互转的基类

    本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对 ...

  8. C#:导入Excel通用类(CSV格式)

    一.引用插件LumenWorks.Framework.IO.dll(CsvReader) 插件下载地址:https://pan.baidu.com/s/1c3kTKli  提取密码 dz7j 二.定义 ...

  9. C#:导入Excel通用类(Xls格式)

    PS:在CSV格式和XLSX格式中有写到通用调用的接口和引用的插件,所以在这个xls格式里面并没有那么详细,只是配上xls通用类. 一.引用插件NPOI.dll.NPOI.OOXML.dll.NPOI ...

随机推荐

  1. 【Linux】常见基础命令之系统操作

    linux现在基本上已成为面试的必考题目,特此总结一些常用的基础命令. cd:切换目录 lilip@ubuntu:~$ cd /home/lilip/test pwd:打印当前目录 lilip@ubu ...

  2. 我的第一个SpringProject——HelloWorld

    我的第一个Spring项目HelloWorld还是花了不少时间,在工具配置上耽误了 我使用的是Eclipse,开始Maven+intellij+Spring搞不太懂 首先要配置Spring: 打开ec ...

  3. pycharm远程调试服务器

    1.下载专业版pycharm并激活 https://blog.csdn.net/weixin_39332299/article/details/79692283 2.创建项目,设置解释器时,选择SSH ...

  4. python2使用eval 让除法可以保留小数

    使用的Python版本2.7, 我在使用eval('1/3')发现一个问题,结果都是去掉小数,保留了整数.但是我需要保留小数,各种查资料,最后在一大神指点下,成功解决这个问题,解决办法是: 加载模块: ...

  5. springboot整合mybatis开发

    1创建项目,在启动类上添加映射扫描注解 2导入依赖,添加mybatis generator自动生成代码插件 <!-- mybatis generator 自动生成代码插件 --> < ...

  6. 2018-2019-2 网络对抗技术 20165206 Exp2 后门原理与实践

    - 2018-2019-2 网络对抗技术 20165206 Exp2 后门原理与实践 - 实验任务 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主 ...

  7. Redis实战 - 4.Key

    Redis 键(key) Redis 键命令用于管理 redis 的键. DEL key 该命令用于在 key 存在时删除 key. 127.0.0.1:6379> set w3ckey red ...

  8. mongodb将时间作为条件查询

    db.stock_signal_single.find({"createtime": { "$lt" : ISODate("2019-04-08T00 ...

  9. sql server managerment 给表加说明

    右击表 =>点属性  =>扩展属性 =>加 MS_Description

  10. 将source类中的属性值赋给target类中对应的属性

    /** * 对象的属性值拷贝 * <p> * 将source对象中的属性值赋值到target对象中的属性,属性名一样,类型一样 * <p> * example: * <p ...