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

ops/2024/12/23 3:17:47/

使用框架 .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/ops/144207.html

相关文章

mac uniapp 转为微信小程序开发

mac uniapp 转为微信小程序开发 1.进入微信公众平台获取小程序Appid在manifest.json配置 2.打开微信开发者工具进入设置—安全设置 3.勾选服务端口 4.点击运行至微信开发工具可自动打开

第十六周做题总结_数据结构_AVL与哈希查找

id:157 A. DS二叉平衡树构建 题目描述 在初始为空的平衡二叉树中依次插入n个结点,请输出最终的平衡二叉树。 要求实现平衡二叉树,不可以使用各类库函数。 AVL代码参考模板: #include <iostream> using namespace std;#define LH 1 // 左高 #define EH 0 // 等高 …

go 聊天系统项目-5 客户端发消息

一、前言 敬告:本文不讲解代码&#xff0c;只是把代码展示出来。 该代码之前的代码见 go 聊天系统项目-1 go聊天系统项目-2 redis 验证用户id和密码 go聊天系统项目-3 redis注册用户 go聊天项目4-显示用户列表 注意&#xff1a;本文使用 go mod 管理代码。详情见 go 包相关知识…

linux中docker命令大全

基本命令 docker pull 拉取镜像 docker pull docker push 推送镜像到DockerRegistry docker push docker images 查看本地镜像 docker images docker rmi 删除本地镜像 docker rmi docker run 创建并运行容器&#xff08;不能重复创建&#xff09; docker run d…

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好&#xff0c;今天给大家分享一个开源的自托管虚拟浏览器项目Neko&#xff0c;旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;提供…

设计模式——原型模式

设计模式——原型模式 目录 设计模式——原型模式介绍实现总结 介绍 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;它通过复制现有的实例来创建新的对象&#xff0c;而不是通过 new 操作符来创建对象。原型模式的核心思想是通过“复制”…

浔川AI翻译登录失败调查报告

《浔川 AI 翻译登录失败调查报告》 一、调查背景 近期收到部分用户反馈&#xff0c;在使用浔川 AI 翻译时出现登录失败的问题&#xff0c;为了及时解决该问题并提升用户体验&#xff0c;特展开此次调查。 二、调查范围与方法 本次调查涵盖了不同操作系统、网络环境以及设备类型…

Linux驱动开发应用层 2 点亮一个LED

目录 先来聊聊sysfs sysfs的具备的优势 LED在哪里&#xff1f; 先来聊聊sysfs 我们下面首先简单聊一下sysfs。他很重要的原因是因为我们跟底下的设备打交道&#xff0c;就是可以透过我们的sysfs来操作我们底层的设备&#xff0c; sysfs是Linux内核中的一个虚拟文件系统&…