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...

      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 System.Diagnostics;
      using System.IO;
      using System.Linq;
      using System.Web;
      namespace YFAPICommon.Libs
      {
         public class ExportToExcel
          {
             private string fileName = null; //文件名
             private NPOI.SS.UserModel.IWorkbook workbook = null;
             private FileStream fs = null;
             private bool disposed;
             public ExportToExcel(string fileName)
              {
                 this.fileName = fileName;
                  disposed = false;
              }
             public void Export(Dictionary<string, string> keys, object list)
              {
                  ISheet sheet = null;
                  fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                 if (fileName.IndexOf(".xlsx") > 0) // 2007版本
                      workbook = new XSSFWorkbook();
                 else if (fileName.IndexOf(".xls") > 0) // 2003版本
                      workbook = new HSSFWorkbook();
                 if (workbook != null)
                  {
                      sheet = workbook.CreateSheet("Sheet1");
                  }
                 else
                  {
                     return ;
                  }
                  写入列名
                  IRow row = sheet.CreateRow(0);
                 int k = 0;
                 foreach(string key in keys.Keys)
                  {
                      row.CreateCell(k).SetCellValue(keys[key]);
                      k++;
                  }
                 int count = 1;
                 string jsonStr = JsonConvert.SerializeObject(list);
                  List<Dictionary<string, object>> objList = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(jsonStr);
                 //foreach (Dictionary<string, object> node in objList)
                 for (int i = 0; i < objList.Count; i++)
                  {
                      Dictionary<string, object> node = objList[i];
                      IRow datarow = sheet.CreateRow(count);
                     int j = 0;
                     foreach (string key in keys.Keys)
                      {
                         object value = null;
                          node.TryGetValue(key, out value);
                          Debug.WriteLine(value);
                         if(value != null)
                              datarow.CreateCell(j).SetCellValue(value.ToString());
                          j++;
                      }
                      count++;
                  }
                  workbook.Write(fs); //写入到excel
              }
          }
      }
  
 

 

调用方法


                 Dictionary<string, string> daochuKeyDic = new Dictionary<string, string>();
                  daochuKeyDic.Add("UserName", "用户名");
                  daochuKeyDic.Add("OrderNo", "订单号");
                  daochuKeyDic.Add("AgentName", "代理商名称");
                  daochuKeyDic.Add("OrderAmount", "订单金额");
                  daochuKeyDic.Add("CreateTime", "创建时间");
                  daochuKeyDic.Add("PayType", "支付类型");
                  daochuKeyDic.Add("OrderState", "支付状态");
                  daochuKeyDic.Add("PayTime", "支付时间");
                 ExportToExcel helper = new ExportToExcel("C:\\Data\\data.xlsx");
                  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个月内不可修改。