首页 > 其他分享 >.net 通过反射导出excel

.net 通过反射导出excel

时间:2023-07-19 10:45:41浏览次数:33  
标签:string int excel 导出 value list var net datas

/// <summary>
/// 详细报表生成excel列名
/// </summary>
private static string _detailsCloumns = @"Actual Claim Amount,Decl Date";

/// <summary>
/// 详细报表生成excel
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public static byte[] DetailDownloadAsync(ImportDetailResponse request)
{
var workbook = new XSSFWorkbook();
var cellStyle = workbook.CreateCellStyle();
// 垂直对齐方式 ,设定垂直居中
cellStyle.VerticalAlignment = VerticalAlignment.Center;
// 水平对齐方式 ,设定水平居中
cellStyle.Alignment = HorizontalAlignment.Center;
var sheet = workbook.CreateSheet("import detail compare data");

var headRow = sheet.CreateRow(0);
string[] titles = _detailsCloumns.Split(",");
for (int i = 0; i < titles.Length; i++)
{
string title = titles[i].Trim();
headRow.CreateCell(i).SetCellValue(title);
}

var datas = request.List;

if (datas != null)
{
//根据SpecialList生成标题
if (datas.Count(t => t.SpecialList != null) > 0)
{
int max = datas.Where(t => t.SpecialList != null).Max(x => x.SpecialList.Count);
if (max > 0)
{
int index = 1;
int specialListCount = titles.Length + max;
for (int i = titles.Length; i < specialListCount; i++)
{
headRow.CreateCell(i).SetCellValue("Specialinstruction" + index);
index++;
}
}
}
for (int i = 0; i < datas.Count; i++)
{
var row = sheet.CreateRow(i + 1);

var fields = GetDetailFields(datas[i]);
for (int j = 0; j < titles.Length; j++)
{
string value = fields[j];
if (!string.IsNullOrWhiteSpace(value))
{
value = value.Trim();
}
else
{
value = "";
}
row.CreateCell(j).SetCellValue(value);
}

if (datas[i].SpecialList != null)
{
for (int j = 0; j < datas[i].SpecialList.Count; j++)
{
row.CreateCell(71 + j).SetCellValue(datas[i].SpecialList[j]);
}
}
}
}

byte[]? result = null;
using (var stream = new MemoryStream())
{
workbook.Write(stream);
result = stream.ToArray();
}

return result;
}

/// <summary>
/// 获取ImportDetail中的字段值
/// </summary>
/// <returns>所有字段名称</returns>
public static List<string> GetDetailFields(ImportDetail detail)
{
var list = new List<string>();
if (detail == null)
{
return list;
}
var pro = detail.GetType().GetProperties();
foreach (var item in pro)
{
object value = item.GetValue(detail);
if (value == null)
{
list.Add("");
}
else
{
if (item.Name == "ReleaseDate" || item.Name == "DeclnoDate")
{
if (item.Name == "CreatedOn")
{
string createdOn = (string)value;
if (!string.IsNullOrWhiteSpace(createdOn))
{
list.Add(DateTime.Parse(createdOn).ToString("yyyy/MM/dd"));
}
}
else
{
var date = (DateTime)value;
list.Add(date.ToString("yyyy/MM/dd"));
}
}
else
{
list.Add(value.ToString());
}
}

}
return list;
}

标签:string,int,excel,导出,value,list,var,net,datas
From: https://www.cnblogs.com/wangtiantian/p/17564930.html

相关文章

  • .NET周刊【7月第3期 2023-07-16】
    国内文章揭秘.NET中的TimerQueue(上)https://www.cnblogs.com/eventhorizon/p/17557821.htmlTimerQueue是.NET中实现定时任务的核心组件,它是一个定时任务的管理器,负责存储和调度定时任务。它被用于实现很多.NET中的定时任务,比如System.Threading.Timer、Task.Delay、Cance......
  • 54.使用VUE3+VITE+TYPESCRIPT+element-plus的setup语法糖,实现导出excel功能
    要实现导出Excel功能,你可以使用以下步骤:1.安装相关依赖:```bashnpminstallxlsxfile-saver```2.在你的组件中引入相关依赖:```javascriptimport{ref}from'vue';import{saveAs}from'file-saver';import{useTable}from'element-plus';importXLSX......
  • python将excel内两列的日期合并
    原excel: 目标将year和month合并:year、month里放的1961等是数字,合并日期的时候需要把它们变成字符串再合并,采用.astype(str)#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Su@file:ceshi.py@time:2023/06/26@desc:"""importpandasaspd#打开excel......
  • ASP.NET 6 使用工作单元操作 MongoDB
    大家好,我是Edison。最近工作中需要用到MongoDB的事务操作,因此参考了一些资料封装了一个小的组件,提供基础的CRUDRepository基类和UnitOfWork工作单元模式。今天,就来简单介绍一下这个小组件。关于MongoDB的事务MongoDB在4.2版本开始全面支持了多文档事务,至今已过了四年了,虽然......
  • Excel数据分析教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Excel数据分析入门教程-从基本到高级概念的简单步骤了解Excel数据分析,其中包括概述,流程,Excel数据分析概述,使用范围名称,表格,使用文本功能清理数据,清洁数据包含日期值,使用时间值,条件格式,排序,过滤,带范围的小计,快速分析,查找功能,数据透视表,数据可视化,验证,财务分析,使用多个表......
  • CSharp: Excel Convert Pdf
     /***netcore6***/usingIronPdf;usingOfficeOpenXml;usingSystem.Text;usingSpire.Pdf;usingSpire.Pdf.Graphics;usingSpire.Xls;usingNPOI.SS.UserModel;usingNPOI.XSSF.UserModel;usingiTextSharp.text;usingiTextSharp.text.pdf;nam......
  • [回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
    在编程方面,从来都是实践出真知,书读百遍其义自见,所以实战是最好的提升自己编程能力的方式。前一段时间,写了一些实战系列文章,如:ASP.NETMVC开发学生信息管理系统Vue+Antdv+Asp.netWebApi开发学生信息管理系统WPF+Prism+MAH+Asp.netWebApi开发学生信息管理系统ASP.NETCore......
  • 笨方法实现unet
    importlogginglogging.basicConfig(level=logging.INFO,format='%(asctime)s-%(filename)s[line:%(lineno)d]-%(levelname)s:%(message)s',datefmt='%Y-%m-%d%H:%M:%S')importtorchimporttorch.nnas......
  • 解决调用Lib时无法找到其导出函数的问题
    问题:一个工程导出静态lib,另一个工程使用Lib中的函数,但是在编译时无法找到Lib中函数,使用dumpbin查看Lib确实导出函数了。解决:确保导出工程和使用工程的调用约定要一致,即C/C++->Advanced->CallingConvention的选项要相同,如都是__stdcall,这样调用时就不会有问题了。......
  • Damiler EDI 项目 Excel 方案开源介绍
    准备下载和运行DaimlerEDI到Excel使用Excel生成一系列EDI文档与Daimler通信。下载工作流  下载示例文件  DaimlerEDI&Excel方案简介本文将继续分享Daimler示例工作流:使用Excel端口和Email端口生成一系列文件,完成与Daimler的EDI通信。DaimlerEDI到Excel示......