NPOI导出EF的List数据

举报
清雨小竹 发表于 2022/09/25 00:36:07 2022/09/25
【摘要】 using Newtonsoft.Json;using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using System;using System.Collections.Generic;using System.Data;using S...

  
  1. using Newtonsoft.Json;
  2. using NPOI.HSSF.UserModel;
  3. using NPOI.SS.UserModel;
  4. using NPOI.XSSF.UserModel;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Diagnostics;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Web;
  12. namespace YFAPICommon.Libs
  13. {
  14. public class ExportToExcel
  15. {
  16. private string fileName = null; //文件名
  17. private NPOI.SS.UserModel.IWorkbook workbook = null;
  18. private FileStream fs = null;
  19. private bool disposed;
  20. public ExportToExcel(string fileName)
  21. {
  22. this.fileName = fileName;
  23. disposed = false;
  24. }
  25. public void Export(Dictionary<string, string> keys, object list)
  26. {
  27. ISheet sheet = null;
  28. fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
  29. if (fileName.IndexOf(".xlsx") > 0) // 2007版本
  30. workbook = new XSSFWorkbook();
  31. else if (fileName.IndexOf(".xls") > 0) // 2003版本
  32. workbook = new HSSFWorkbook();
  33. if (workbook != null)
  34. {
  35. sheet = workbook.CreateSheet("Sheet1");
  36. }
  37. else
  38. {
  39. return ;
  40. }
  41. 写入列名
  42. IRow row = sheet.CreateRow(0);
  43. int k = 0;
  44. foreach(string key in keys.Keys)
  45. {
  46. row.CreateCell(k).SetCellValue(keys[key]);
  47. k++;
  48. }
  49. int count = 1;
  50. string jsonStr = JsonConvert.SerializeObject(list);
  51. List<Dictionary<string, object>> objList = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(jsonStr);
  52. //foreach (Dictionary<string, object> node in objList)
  53. for (int i = 0; i < objList.Count; i++)
  54. {
  55. Dictionary<string, object> node = objList[i];
  56. IRow datarow = sheet.CreateRow(count);
  57. int j = 0;
  58. foreach (string key in keys.Keys)
  59. {
  60. object value = null;
  61. node.TryGetValue(key, out value);
  62. Debug.WriteLine(value);
  63. if(value != null)
  64. datarow.CreateCell(j).SetCellValue(value.ToString());
  65. j++;
  66. }
  67. count++;
  68. }
  69. workbook.Write(fs); //写入到excel
  70. }
  71. }
  72. }

 

调用方法


  
  1. Dictionary<string, string> daochuKeyDic = new Dictionary<string, string>();
  2. daochuKeyDic.Add("UserName", "用户名");
  3. daochuKeyDic.Add("OrderNo", "订单号");
  4. daochuKeyDic.Add("AgentName", "代理商名称");
  5. daochuKeyDic.Add("OrderAmount", "订单金额");
  6. daochuKeyDic.Add("CreateTime", "创建时间");
  7. daochuKeyDic.Add("PayType", "支付类型");
  8. daochuKeyDic.Add("OrderState", "支付状态");
  9. daochuKeyDic.Add("PayTime", "支付时间");
  10. ExportToExcel helper = new ExportToExcel("C:\\Data\\data.xlsx");
  11. helper.Export(daochuKeyDic, list);

 

文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/84183953

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。