当前位置: 首页 > news >正文

做最好的win7系统下载网站seo代码优化

做最好的win7系统下载网站,seo代码优化,怎样找做淘宝客的网站,女生做网站前端设计师.NET6MiniExcel根据数据源横向导出头部标题 MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。 特点: 低内存耗用,避免OOM、频繁 Full GC 情况 支持即时操作每行数据 兼具搭配 LINQ 延迟查询特性,能办到低消耗、快速分页等复杂查询 轻量…

.NET6+MiniExcel根据数据源横向导出头部标题

MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。

特点:
低内存耗用,避免OOM、频繁 Full GC 情况
支持即时操作每行数据
兼具搭配 LINQ 延迟查询特性,能办到低消耗、快速分页等复杂查询
轻量,不需要安装 Microsoft Office、COM+,DLL小于150KB
简便操作的 API 风格

github地址: MiniExcel
gitee地址: MiniExcel

本案例实现的功能是使用Miniexcel横向导出指标编码、指标名称,医院类型及指标对应的数据值,
要求导出效果如下所示:

  1. 第一列展示医院
  2. 头部两行动态展示指标编码、指标名称,下面展示每家医院所对应指标的值
    在这里插入图片描述
  3. 安装NuGet程序包SqlSugarCore、MiniExcel、Furion

代码如下:
结合实际情况,可以适当改下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MiniExcelLibs;
using MiniExcelLibs.Attributes;
using MiniExcelLibs.OpenXml;
using SqlSugar;namespace DJPSMS.Application.Service
{[AllowAnonymous]public class MiniexcelTest : IDynamicApiController{private readonly ISqlSugarClient _db;private readonly SqlSugarRepository<TDU_HOSPITALTEST> _tduHospitalRepository;/// <summary>/// 构造函数注入SqlSugar/// </summary>/// <param name="db"></param>public MiniexcelTest(ISqlSugarClient db, SqlSugarRepository<TDU_HOSPITALTEST> tduHospitalRepository){_db = db;_tduHospitalRepository = tduHospitalRepository;}/// <summary>/// Miniexcel导出/// </summary>/// <param name="Chapter">章节(案例中未使用)</param>/// <returns></returns>[HttpGet("DownLoadExcel")]public void DownLoadExcel([FromQuery][Required] string Chapter = "1"){try{// 导出数据源总集合var quotaAssemble = new List<Dictionary<string, object>>();// 构建横向指标标题var quotaPairy = new Dictionary<string, object>();#region 构造excel模板及数据源Log.Information($"构造excel横向指标标题开始--------");// 使用SqlSugar查询数据库// var quotaArray = _db.Queryable<DW_QUOTATEST>()//    .Where(x => x.Q_CODE.StartsWith(Chapter))//    .GroupBy(x => new { x.Q_CODE, x.Q_NAME })//    .OrderBy(x => x.Q_CODE)//    .Select(g => new { g.Q_CODE, g.Q_NAME })//    .ToList();// 所有的指标类型var quotaArray = new List<DW_QUOTATEST>(){new DW_QUOTATEST{ Q_ID = "1", Q_CODE = "1.01.01",Q_NAME ="指标1"},new DW_QUOTATEST{ Q_ID = "2", Q_CODE = "1.01.02",Q_NAME ="指标2"},new DW_QUOTATEST{ Q_ID = "3", Q_CODE = "1.01.03",Q_NAME ="指标3"},new DW_QUOTATEST{ Q_ID = "4", Q_CODE = "1.01.04",Q_NAME ="指标4"},new DW_QUOTATEST{ Q_ID = "5", Q_CODE = "1.01.05",Q_NAME ="指标5"},new DW_QUOTATEST{ Q_ID = "6", Q_CODE = "1.01.06",Q_NAME ="指标6"},new DW_QUOTATEST{ Q_ID = "7", Q_CODE = "1.01.07",Q_NAME ="指标7"},new DW_QUOTATEST{ Q_ID = "8", Q_CODE = "1.01.08",Q_NAME ="指标8"},new DW_QUOTATEST{ Q_ID = "9", Q_CODE = "1.01.09",Q_NAME ="指标9"},new DW_QUOTATEST{ Q_ID = "10", Q_CODE = "1.01.10",Q_NAME ="指标10"},new DW_QUOTATEST{ Q_ID = "11", Q_CODE = "1.01.11",Q_NAME ="指标11"},new DW_QUOTATEST{ Q_ID = "12", Q_CODE = "1.01.12",Q_NAME ="指标12"},new DW_QUOTATEST{ Q_ID = "13", Q_CODE = "1.01.13",Q_NAME ="指标13"}};// 設置列宽var config = new OpenXmlConfiguration{DynamicColumns = CreateDynamicColumns(quotaArray.GroupBy(x => x.Q_CODE).Select(x => x.Key).ToList())};// 构建横向指标标题quotaPairy["医院名称"] = "";for (int i = 0; i < quotaArray.Count; i++){if (quotaPairy.ContainsKey(quotaArray[i].Q_CODE)) continue;var propertyCode = quotaArray[i].Q_CODE;var propertyName = quotaArray[i].Q_NAME;quotaPairy[propertyCode] = propertyName;}quotaAssemble.Add(quotaPairy);Log.Information($"构造excel横向指标标题结束--------");// 构建第一列医院类型var hospitalList = new List<TDU_HOSPITALTEST>(){new TDU_HOSPITALTEST{ FJGDM ="1",FDESC ="测试医院1" },new TDU_HOSPITALTEST{ FJGDM ="2",FDESC ="测试医院2" },new TDU_HOSPITALTEST{ FJGDM ="3",FDESC ="南京第一" },new TDU_HOSPITALTEST{ FJGDM ="3",FDESC ="测试医院4" },new TDU_HOSPITALTEST{ FJGDM ="4",FDESC ="测试医院5" },new TDU_HOSPITALTEST{ FJGDM ="5",FDESC ="测试医院6" },new TDU_HOSPITALTEST{ FJGDM ="6",FDESC ="测试医院7" },new TDU_HOSPITALTEST{ FJGDM ="7",FDESC ="测试医院8" },new TDU_HOSPITALTEST{ FJGDM ="8",FDESC ="测试医院9" },new TDU_HOSPITALTEST{ FJGDM ="9",FDESC ="测试医院10" },new TDU_HOSPITALTEST{ FJGDM ="10",FDESC ="测试医院11" },new TDU_HOSPITALTEST{ FJGDM ="11",FDESC ="测试医院12" },};//每家医院对应的指标的值var quotaValuePairy = new Dictionary<string, object>();// 总数据源,一般来说是从数据库联表中查询的数据,这边是声明的测试数据List<HospitalViewCodeDetailTest> resultList = new List<HospitalViewCodeDetailTest>(){// 测试医院1的数据new HospitalViewCodeDetailTest { Code = "1.01.01", CodeName = "指标1",HospitalCode ="1",HospitalName ="测试医院1" ,QValue = "11.8"},new HospitalViewCodeDetailTest { Code = "1.01.02", CodeName = "指标2",HospitalCode ="1",HospitalName ="测试医院2" ,QValue = "12.8"},// 测试医院2的数据new HospitalViewCodeDetailTest { Code = "1.01.01", CodeName = "指标1",HospitalCode ="2",HospitalName ="测试医院1" ,QValue = "22.6"},new HospitalViewCodeDetailTest { Code = "1.01.02", CodeName = "指标2",HospitalCode ="2",HospitalName ="测试医院1" ,QValue = "23.2"} ,// 测试医院3的数据new HospitalViewCodeDetailTest { Code = "1.01.01", CodeName = "指标1",HospitalCode ="3",HospitalName ="测试医院3" ,QValue = "65.8"} ,new HospitalViewCodeDetailTest { Code = "1.01.02", CodeName = "指标2",HospitalCode ="3",HospitalName ="测试医院4" ,QValue = "25.1"}};// 填充对应的指标值for (int i = 0; i < hospitalList.Count; i++){quotaValuePairy = new Dictionary<string, object>(); // 在每次迭代中创建新的字典对象var hospitalCodeDetails = resultList.Where(x => x.HospitalCode == hospitalList[i].FJGDM).Select(x => new{x.Code,x.QValue}).ToList();quotaValuePairy["医院名称"] = hospitalList[i].FDESC;for (int o = 0; o < quotaArray.Count; o++){if (quotaValuePairy.ContainsKey(quotaArray[o].Q_CODE)) continue;quotaValuePairy[quotaArray[o].Q_CODE] = hospitalCodeDetails.FirstOrDefault(x => x.Code == quotaArray[o].Q_CODE)?.QValue; //指标值}quotaAssemble.Add(quotaValuePairy);}#endregion#region 导出excelif (quotaAssemble.Count > 0){Log.Information("正在导出......");// 读取json文件中的自定义保存路径// App.GetConfig官网介绍地址:http://furion.baiqian.ltd/docs/global/app?_highlight=getconfig#12-%E8%8E%B7%E5%8F%96%E9%85%8D%E7%BD%AE%E5%AF%B9%E8%B1%A1//可以改成自己地址string savePath = $"{App.GetConfig<string>("GenerateExcelOfHospitalFillingJobConfig:SavePath")}\\DownLoadExcel\\";if (!Directory.Exists(savePath)){Directory.CreateDirectory(savePath);}string filename = $"{DateTime.Now:yyyyMMddHHmmss}.xlsx";var absoluteFilePath = Path.Combine(savePath, filename);// 保存MiniExcel.SaveAs(absoluteFilePath, quotaAssemble.ToArray(),configuration: config);Log.Information($"{filename}导出成功!");}#endregion}catch (Exception ex){// 异常处理逻辑Log.Error($"发生异常: {ex.Message}");}}/// <summary>/// 设置行宽/// </summary>/// <returns></returns>private DynamicExcelColumn[] CreateDynamicColumns(List<string> dwQuota){var dynamicColumns = new List<DynamicExcelColumn>{new DynamicExcelColumn("医院名称") { Index = 0, Width = 30 }};dynamicColumns.AddRange(dwQuota.Select((codeTitle, codeIndex) =>{if (string.IsNullOrEmpty(codeTitle)){// 处理空值的情况,例如使用默认列名或跳过该列return null; // 返回 null 或者其他处理方式}else{return new DynamicExcelColumn(codeTitle) { Index = codeIndex + 1, Width = 25 };}}).Where(c => c != null).ToArray());return dynamicColumns.ToArray();}}/// <summary>/// 指标实体/// </summary>public class DW_QUOTATEST{/// <summary>/// 主键guid/// </summary>[SugarColumn(ColumnDescription = "主键id", Length = 32, IsPrimaryKey = true)]public string Q_ID { get; set; }/// <summary>/// 编码/// </summary>public string Q_CODE { get; set; }/// <summary>/// 指标名称/// </summary>public string Q_NAME { get; set; }}/// <summary>/// 医院实体/// </summary>public class TDU_HOSPITALTEST{public string FJGDM { get; set; }public string FSEQ { get; set; }public string FDESC { get; set; }}public class HospitalViewCodeDetailTest{/// <summary>/// 医院编码/// </summary>public string HospitalCode { get; set; }/// <summary>/// 医院名称/// </summary>public string HospitalName { get; set; }/// <summary>/// 指标编码/// </summary>public string Code { get; set; }/// <summary>/// 指标名称/// </summary>public string CodeName { get; set; }/// <summary>/// QValue指标值/// </summary>public string QValue { get; set; }}
}

最后效果图如下所示:
在这里插入图片描述
写的不好,如有错误还请指正


文章转载自:
http://overlive.tyjp.cn
http://hoo.tyjp.cn
http://lackey.tyjp.cn
http://kidderminster.tyjp.cn
http://egilops.tyjp.cn
http://phenoxy.tyjp.cn
http://blintze.tyjp.cn
http://prostate.tyjp.cn
http://neutrality.tyjp.cn
http://carnie.tyjp.cn
http://hylicist.tyjp.cn
http://devoice.tyjp.cn
http://zambomba.tyjp.cn
http://chalcedony.tyjp.cn
http://demanding.tyjp.cn
http://candytuft.tyjp.cn
http://macrostomia.tyjp.cn
http://sourball.tyjp.cn
http://antisepticise.tyjp.cn
http://igfet.tyjp.cn
http://unsharp.tyjp.cn
http://lunger.tyjp.cn
http://wallop.tyjp.cn
http://immunogenic.tyjp.cn
http://australite.tyjp.cn
http://binal.tyjp.cn
http://wizardly.tyjp.cn
http://archaeoastronomy.tyjp.cn
http://aquavit.tyjp.cn
http://ablush.tyjp.cn
http://rhinopolypus.tyjp.cn
http://prudently.tyjp.cn
http://standoff.tyjp.cn
http://baudelairean.tyjp.cn
http://snatchy.tyjp.cn
http://deoxidizer.tyjp.cn
http://bifocal.tyjp.cn
http://alloantigen.tyjp.cn
http://bibliotics.tyjp.cn
http://contemporary.tyjp.cn
http://paleogenetics.tyjp.cn
http://podagric.tyjp.cn
http://ruefulness.tyjp.cn
http://frozen.tyjp.cn
http://turrethead.tyjp.cn
http://ogasawara.tyjp.cn
http://inscriptionless.tyjp.cn
http://predicatory.tyjp.cn
http://choky.tyjp.cn
http://miladi.tyjp.cn
http://side.tyjp.cn
http://unsympathetic.tyjp.cn
http://akashi.tyjp.cn
http://fijian.tyjp.cn
http://arthroscope.tyjp.cn
http://turkophil.tyjp.cn
http://automation.tyjp.cn
http://seamless.tyjp.cn
http://astrodome.tyjp.cn
http://penalty.tyjp.cn
http://whereby.tyjp.cn
http://ctd.tyjp.cn
http://hydrosphere.tyjp.cn
http://postclitic.tyjp.cn
http://zoogeographic.tyjp.cn
http://hiker.tyjp.cn
http://embroglio.tyjp.cn
http://estreat.tyjp.cn
http://immersible.tyjp.cn
http://uvea.tyjp.cn
http://gudrun.tyjp.cn
http://hamza.tyjp.cn
http://tiliaceous.tyjp.cn
http://raciness.tyjp.cn
http://deceitful.tyjp.cn
http://centerpiece.tyjp.cn
http://interpenetrate.tyjp.cn
http://phylon.tyjp.cn
http://bistate.tyjp.cn
http://notarize.tyjp.cn
http://dupable.tyjp.cn
http://eradiculose.tyjp.cn
http://basra.tyjp.cn
http://unchurched.tyjp.cn
http://nictate.tyjp.cn
http://uninformative.tyjp.cn
http://scandalize.tyjp.cn
http://retroject.tyjp.cn
http://diplomapiece.tyjp.cn
http://boxthorn.tyjp.cn
http://radiophosphorus.tyjp.cn
http://supplier.tyjp.cn
http://pockpit.tyjp.cn
http://lumen.tyjp.cn
http://tearing.tyjp.cn
http://deoxidate.tyjp.cn
http://antiterrorism.tyjp.cn
http://matriculability.tyjp.cn
http://rocker.tyjp.cn
http://fumigation.tyjp.cn
http://www.dt0577.cn/news/79105.html

相关文章:

  • 建筑类企业网站模板百度云盘下载
  • 自己怎样做公司广告视频网站网络营销常见术语
  • 上海平台网站建设网站推广优化公司
  • 郑州做网站公司哪家好网络营销策略包括哪四种
  • 企业管理系统网站开发标书培训计划方案模板
  • 系统之家一键重装系统关键词在线优化
  • 十大免费不用收费的网站营销培训课程
  • 上海工程建设执业资格注册中心网站广告竞价推广
  • 网站怎么做反爬虫优秀的营销策划案例
  • 学校局域网站建设google谷歌搜索引擎入口
  • 重庆 网站开发王通seo教程
  • 网站建设需要学习什么促销活动推广方案
  • 高培淇自己做的网站百度热榜
  • 中国建设厅网站全渠道营销案例
  • 可以做网站的公司有哪些免费二级域名生成网站
  • 舟山网站建设哪家好凤凰网台湾资讯
  • java web做网站免费b站推广网站破解版
  • 软件培训班出来能找到工作吗长沙百度快速优化排名
  • 丽江市住房建设局网站网络营销的方式与手段
  • 赣州网页设计公司中国seo公司
  • 网站建设绵阳评论优化
  • 义乌市建设局网站seo网站优化知识
  • 英文网站建2021年关键词有哪些
  • 谷城网站快速排名百度网站排名优化软件
  • 公司网站设计思路关键词seo教程
  • 网站开发还需要兼ie吗网盘app下载
  • 怎么做网站统计百度推广图片
  • 大连网站公司中央刚刚宣布大消息
  • 小程序加盟平台黄冈网站推广优化找哪家
  • 海外域名网站选择宁波seo优化公司