.net core在linux导出excel,System.Drawing.Common is not supported on this platform

news/2024/12/21 12:40:24/

使用框架 .NET7
导出组件 Aspose.Cells for .NET 5.3.1

asp.net core mvc 如果使用Aspose.Cells导出excel时,报错
System.Drawing.Common is not supported on this platform

平台特定实现:
对于Windows平台,System.Drawing.Common 通常是可以正常工作的。
对于非Windows平台,你可能需要寻找替代方案,如使用 SkiaSharp、ImageSharp 或其他跨平台的图形库。
System.Drawing.Common 是一个提供基本图形功能的库,但它并不是在所有平台上都可用。特别是在非Windows平台上(如Linux和macOS),由于底层图形系统的差异,直接使用 System.Drawing.Common 可能会遇到问题

推荐使用不依赖操作系统底层环境的组件来导出excel,这样linux中就不用安装图像组件依赖了,比如libSkiaSharp,这里推荐用 MiniExcel 来导出excel,支持Linux,直接在nuget搜索安装MiniExcel

MiniExcel__13">MiniExcel 组件介绍

MiniExcel 简单高效,避免了 OOM 的 .NET 处理 Excel 工具。
目前大多数流行的框架都需要将所有数据加载到内存中以方便操作,但这会引起内存消耗问题。MiniExcel 尝试使用流中的算法将原来的 1000 MB 占用减少到几 MB,以避免 OOM(内存不足)。

特征

  • 低内存消耗,避免 OOM(内存不足)和全量 GC
  • 支持每行数据的实时操作
  • 支持 LINQ 延迟执行,可以做低消耗、快速分页等复杂查询
  • 轻量级,未安装 Microsoft Office,无 COM+,DLL 大小小于 150KB
  • 简单的 API 样式来读/写/填充 excel
    在这里插入图片描述

MiniExcel_excel_25">MiniExcel 导出excel参考代码:

 public static string ExportExcelFile(Object list, string fileName){//检查导出目录是否在 string dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "export");if (!System.IO.Directory.Exists(dir)){System.IO.Directory.CreateDirectory(dir);}string filePath = Path.Combine(dir, fileName);string url = Path.Combine("export", fileName);//测试数据var value = new[] {new { id="12",name="武松",createTime="2024-12-17 16:35:41",point=284.7},new { id="23",name="李斯",createTime="2024-12-11 16:35:41",point=184.5},new { id="31",name="欧阳楠",createTime="2024-10-14 16:35:41",point=384.1},new { id="14",name="范仲淹",createTime="2024-05-24 16:35:41",point=291.2}};var config = new OpenXmlConfiguration{/** new DynamicExcelColumn("id"){Name="主键" } , Name设置列中文名称;new DynamicExcelColumn("id"){Name="主键" ,Ignore=true} , Ignore表示此列不导出;Index设置所在列下标(数字),也可以控制显示顺序; *///配置列名DynamicColumns = new DynamicExcelColumn[] {new DynamicExcelColumn("id"){Name="主键" },new DynamicExcelColumn("name"){ Name="姓名",Width=20},new DynamicExcelColumn("createTime"){Name="创建时间", Format="yyyy-MM-dd",Width=55},new DynamicExcelColumn("point"){ Name="得分"},}};MiniExcel.SaveAs(filePath, value, configuration: config);//删除已经过期的文件Action<string> delFileAc = (fileDir) =>{try{var files = System.IO.Directory.GetFiles(fileDir);if (files == null || files.Length == 0) return;foreach (var filePath in files){if (File.Exists(filePath)){var fileInfo = new FileInfo(filePath);if ((DateTime.Now - fileInfo.LastWriteTime).TotalHours > 48){File.Delete(filePath);Console.WriteLine("成功删除导出文件=" + filePath);}}}}catch (Exception){}};delFileAc(dir);return url;}

导出文件效果

在这里插入图片描述


http://www.ppmy.cn/news/1556926.html

相关文章

Reactor 响应式编程(第三篇:R2DBC)

系列文章目录 Reactor 响应式编程&#xff08;第一篇&#xff1a;Reactor核心&#xff09; Reactor 响应式编程&#xff08;第二篇&#xff1a;Spring Webflux&#xff09; Reactor 响应式编程&#xff08;第三篇&#xff1a;R2DBC&#xff09; Reactor 响应式编程&#xff08…

【人工智能数学基础】——深入详解贝叶斯理论:掌握贝叶斯定理及其在分类和预测中的应用

深入详解贝叶斯理论&#xff1a;掌握贝叶斯定理及其在分类和预测中的应用 贝叶斯理论&#xff08;Bayesian Theory&#xff09;是概率论和统计学中的一个重要分支&#xff0c;它以托马斯贝叶斯&#xff08;Thomas Bayes&#xff09;命名&#xff0c;主要关注如何根据新的证据更…

通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统

背景介绍 阿里云向量检索服务Milvus版&#xff08;简称阿里云Milvus&#xff09;是一款云上全托管服务&#xff0c;确保了了与开源Milvus的100%兼容性&#xff0c;并支持无缝迁移。在开源版本的基础上增强了可扩展性&#xff0c;能提供大规模 AI 向量数据的相似性检索服务。相…

基于时间情境创造与 AI 智能名片 S2B2C 商城小程序源码的零售创新策略研究

摘要&#xff1a;本文聚焦于零售领域的创新发展&#xff0c;深入探讨了时间情境创造在零售中的重要性&#xff0c;并结合 AI 智能名片 S2B2C 商城小程序源码这一新兴技术手段&#xff0c;阐述其如何助力零售企业突破传统模式的局限。通过对国美线上线下融合案例的剖析&#xff…

BOB.meme已于12月18日正式部署于BNB Chain

12月20日消息&#xff0c;BOB.meme已于2024年12月18日正式部署于BNB Chain 。BOB.meme为BNB Chain新晋memeconis launchpad&#xff0c;细分领域为 DeSci、AI。为用户和DEV匹配算力池和科研论文池&#xff0c;以期实现MEMECOINS赋能&#xff0c;并将利润80%分配给 BOB 流动性提…

【Java基础面试题024】Java中包装类型和基本类型的区别是什么?

回答重点 基本类型&#xff1a; Java中有8种基本数据类型&#xff08;byte、short、int、long、float、double、char、boolean&#xff09;他们是直接存储数值的变量&#xff0c;位于栈上&#xff08;局部变量在栈上、成员变量在堆上&#xff0c;静态字段/类在方法区&#xf…

大数据-254 离线数仓 - Airflow 任务调度 核心交易调度任务集成

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

component-后端返回图片(数据)前端进行复制到剪切板

1.前言 ‌Base64编码‌&#xff1a;将图片转换为Base64编码的字符串&#xff0c;然后通过HTTP协议传输到前端。前端接收到Base64字符串后&#xff0c;可以通过JavaScript将其解码并显示为图片。这种方式适合小图片&#xff0c;如logo或验证码&#xff0c;因为Base64编码后的字符…