Excel 转 PDF 无需 Office

2023-12-27

我需要在我正在开发的 Windows 应用程序中生成 PDF 报告,我通过将 .xlsx 文件导出为 pdf 来完成此操作。不过,我目前正在为此使用互操作:

  • 我需要在不要求用户购买软件的情况下执行此操作,因此不需要 Microsoft Office Excel。
  • 我也不能使用任何严重的依赖项(例如开放/自由办公室)。
  • 该应用程序位于 .NET winforms 中并且是本地的(不依赖于互联网连接)。

我尝试过的事情:

  • 我尝试过 iTextSharp 但这变得非常复杂 就像溢出的柱子一样。
  • 尝试了 closeXML 但无法转换为 PDF。
  • (如前所述)尝试了互操作,但找不到使其独立于 Office 的方法。

帮助将不胜感激,提前谢谢你:)

edits:

iTextSharp

我会使用它,除非我需要导出一个具有可变数量的大数据表 列(最多 30 列),如果列很多,那就变得非常复杂 处理列溢出,这在互操作中很容易。

Aspose

似乎太贵了,因为我在一家小公司工作,目前资源非常有限。


另一个不错的选择是使用 Spire.XLS。虽然它会在顶部显示评估警告,但您可以使用 FreeSpire.XLS 摆脱它。下面是它的链接https://www.nuget.org/packages/FreeSpire.XLS/ https://www.nuget.org/packages/FreeSpire.XLS/

下面是摘自的代码片段

https://forums.asp.net/t/2087645.aspx?Saving+xlsx+to+pdf https://forums.asp.net/t/2087645.aspx?Saving+xlsx+to+pdf

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Spire.Xls; 

namespace ConvertExcelToPdf 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 

            Workbook workbook = new Workbook(); 
            workbook.LoadFromFile(@"..\..\sample2.xlsx"); 
            workbook.ConverterSetting.SheetFitToPage = true; 
            workbook.SaveToFile(@"..\..\sample.pdf", FileFormat.PDF); 
            System.Diagnostics.Process.Start(@"..\..\sample.pdf"); 
        } 
    } 
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel 转 PDF 无需 Office 的相关文章

  • ASMX Web 服务,测试表单仅在本地计算机上适用于一种 WebMethod

    我有一个正在测试的 ASMX WebService 并且在大多数方法上我都可以使用测试表单进行测试 然而 我确实有一种方法 测试表上写着 The test form is only available for requests from t
  • c 使用 lseek 以相反顺序复制文件

    我已经知道如何从一开始就将一个文件复制到另一个文件 但是我如何修改程序以按相反的顺序复制它 源文件应具有读取访问权限 目标文件应具有读写执行权限 我必须使用文件控制库 例如 FILE A File B should be ABCDEF FE
  • AcceptSocket 超时?

    是否有可能AcceptSocket on a TcpListener具有超时的对象 以便它偶尔被中断 TcpListener server new TcpListener localIP port server Start while sh
  • 打开位置设置页面或提示用户启用位置

    我一直在绞尽脑汁 徒劳地谷歌搜索 我正在尝试找到一种方法来提示用户通过直接进入设置页面或仅点击屏幕上的 是 来切换位置 我见过的所有代码似乎都不起作用 有人有有效的方法吗 一个详细的例子将不胜感激 谢谢 我对 Xamarin 开发非常陌生
  • 应用新设置时如何防止 GraphicsDevice 被丢弃?

    我的游戏窗口允许手动调整大小 这意味着它可以像任何其他普通窗口一样通过拖动其边缘来调整大小 游戏还利用了RenderTarget2D rt2d 在主 Draw 方法中设置主渲染目标 GraphicsDevice SetRenderTarge
  • += 运算符在 C++ 中是如何实现的?

    这是我一直在思考的一个问题 但从未找到任何资源来说明这个问题的答案 事实上它不仅是为了 也适用于它的兄弟姐妹 即 等等 当然不是 考虑这个例子 int a 5 a 4 this will make a 9 现在考虑等效表达式 a a 4 T
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 如果我重新分配并且新大小为 0,会发生什么情况。这与释放等效吗?

    给出以下代码 int a NULL a calloc 1 sizeof a printf d n a a realloc a 0 printf d n a return 0 它返回 4078904 0 这个 realloc 相当于 free
  • 这些工作队列标志意味着什么?

    在研究工作队列时 我遇到了内核中定义的工作队列标志和常量 我有以下我无法理解的疑问 这里的排水和救援到底是什么意思 WQ DRAINING 1 lt lt 6 internal workqueue is draining WQ RESCUE
  • 在 Windows 上使用 C/C++ 开发时省略 msvcr100.dll?

    是否可以在 Windows 上使用 C C 进行开发而不链接到 msvcr100 dll 我知道这是 Windows 的标准 c 库 但我想知道如果我没有安装 Visual Studio 或 Redistributable 软件包 我的计算
  • List 或其他类型上的 string.Join

    我想将整数数组或列表转换为逗号分隔的字符串 如下所示 string myFunction List
  • 使用 GhostScript 获取页面大小

    是否可以使用 GhostScript 获取页面大小 例如从 PDF 文档页面 我见过 bbox 设备 但它返回的是边界框 每页不同 而不是 PDF 页面的 TrimBox 或 CropBox 看http www prePressure co
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 动态菜单创建IoC

    我想知道是否有人知道我如何创建如何使用 AutoFac 之类的东西来让我动态地允许 dll 创建自己的表单和菜单项以在运行时调用它们 所以如果我有一个 员工 dll 新入门表格 证书表格 供应商 dll 供应商详细信息来自 产品形态 在我的
  • 使用 WinAPI 连接禁用的显示设备

    我的问题是启用禁用的监视器ChangeDisplaySettingsEx 我想这不是火箭科学 但经过一番挖掘后 它看起来仍然是不可能的 我找到了一种根据找到的 Microsoft 代码示例禁用所有辅助显示器的方法here https msd
  • 如何使用“路径”查询 XDocument?

    我想查询一个XDocument给定路径的对象 例如 path to element I want 但我不知道如何继续 您可以使用以下方法System Xml XPath Extensions http msdn microsoft com
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同
  • 使用 apachesoap:使用 .net 在 Web 服务中映射复杂数据类型

    我有一个用 Coldfusion 编程的 Web 服务 我试图使用 c net 来使用它 特定的 Web 服务返回一个 Coldfusion 结构 具有键和值的项目的集合 该结构由 Web 服务公开为 apachesoap Map 类型的复
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码
  • 查找和替换正则表达式问题

    感谢这里对我其他问题的所有大力帮助 我开始掌握正则表达式 但我仍然对这个一无所知 我的代码是 StreamReader reader new StreamReader fDialog FileName ToString string con

随机推荐

  • Keycloak - 多重/2FA 因素 - OTP - 二维码 - 自定义登录屏幕 - Rest API

    I have 我自己的登录页面 用户在其中输入用户名 密码 该用户名 密码用于通过 Keycloak Rest API 登录 http localhost 8080 auth realms Demo protocol openid conn
  • SQL代理作业:确定它已经运行了多长时间

    场景 某些 SQL 代理作业计划全天每隔几分钟运行一次 在某些情况下 它会错过下一个时间表 因为它仍在按照上一个时间表运行 有时 工作可能会 挂起 这不会产生失败 因为作业尚未停止 发生这种情况时 可以手动停止该作业 并在下次运行时正常工作
  • React 如何在调用 onSubmit 时绑定到组件

    在我的组件中 我尝试调用组件的handleChange 和handleSubmit 函数 如果我像这样渲染表格示例 https facebook github io react docs forms html
  • JQuery如何从href标签中提取值?

    我是 JQuery 新手 如果我有以下标签 最好的 JQuery 方法是什么 从 href 中提取 page 的值 a href Search Advanced page 2 2 a Malcolm 我首先想到的是单行正则表达式 var p
  • 如何为来自同一链接的页面添加规范标签?

    我正在使用 symfony 1 0 6 在我的网站中 我有两个 URL http newe4s com news articles view 033 job news and information and http newe4s com
  • 从 DropdownButtonFormField 中删除下划线

    如何从 DropdownButtonFormField 中删除下划线 检查下面的照片 我尝试了 InputDecortaion 的各种选项组合 但找不到任何方法 SizedBox width 100 0 child DropdownButt
  • get/set 已被弃用,取而代之的是 config 命令

    在命令行中使用 angular cli 我执行了 ng set defaults styleExt styl 将默认样式设置为 Stylus 我得到了以下响应 get set 已被弃用 取而代之的是 config 命令 我想更改现有项目的样
  • Prolog递归过程解释

    如果可能的话 我希望有人解释这个过程 来自 立即学习序言 一书 它需要两个数字并将它们加在一起 add 0 Y Y add s X Y s Z add X Y Z 原则上我明白 但我有一些问题 假设我发出查询 add s s 0 s 0 R
  • 寻找一种有效的方法或算法来检查文件是否属于某个文件夹路径列表中的某个项目

    我有一个文件夹路径列表 此列表中可能有许多 数十个甚至数百个文件夹路径 例如 C Program Files 7 Zip many directories under C Program Files C ProgramData Adobe
  • 通过 microsoft webtest 上传文件

    我有一个 webtest 我打算用它来加载测试将文件上传到网站 我正在使用 Visual Studio 中内置的 WebTest 框架 目的是从 Azure 运行更大规模的测试 我创建了一个新的网络测试并记录了步骤 包括文件上传 这一切都记
  • 在哪里可以找到特定 Git 提交的快照?

    我了解到 Git 为每次提交保留一个快照 快照本质上是copies of changed文件和一些references to unchanged files 所有Git相关数据都存储在 git存储库目录内的目录 duong2179 mbpr
  • weakhashmap是如何工作的? [复制]

    这个问题在这里已经有答案了 就像weakhashmap如何理解对其键之一的引用现在已经过时一样 尤其是如果键是池化的字符串的话 您不能将字符串文字与 WeakHashMap 一起使用 当然可以 但这样做没有意义 String myKey s
  • 如何在 Swift 中的泛型扩展中使用带有可选类方法的协议?

    我正在尝试使用类方法对现有类进行扩展 例如 objc public protocol MyProtocol optional class func foo gt Int 我在扩展中使用这个协议 通用如下 extension MyClass
  • 如果会话超时,MVC 中的 jquery ajax 调用后如何重定向到新页面?

    1 我有一个调用操作的Ajax链接 该操作返回一个视图 该视图在特定的Div中打开 将其视为使用相应视图更新div的菜单 2 如果会话超时 则返回我的登录视图 因此 如果我单击链接并且会话超时 登录视图将在 div 中打开 而不是在整个页面
  • 每天执行一次查询

    基本上我有一个MySQL数据库 其中有一个表存储我网站用户的请求 我想自动执行一个查询 删除所有已完成的请求 已完成意味着该列Status 3 根据该列 超过 180 天ArchivingDate My Requests table Req
  • 六个月内保留的参与者百分比

    我是一名学校老师 对 MS SQL Server 非常陌生 每个人都建议尝试一下这个网站 开始 我正在尝试编写查询来测试参与学术项目的不同类型的结果衡量标准 我想尝试几种不同的方法来计算这个结果测量 我试图计算的结果是 在该计划的六个月内保
  • 如何在不同的计算机上克隆 RStudio 环境

    我最近一直在加快使用 R 的速度 并且想知道最有效的方法是将 RStudio 环境 尤其是软件包安装 从一台计算机克隆到另一台计算机 我希望能够从台式机切换到笔记本电脑 但我在工作时经常向台式机添加软件包 并且希望有一种简单的方法来确保在笔
  • Python 中的持久记忆

    我有一个昂贵的函数 它接受并返回少量数据 一些整数和浮点数 我已经memoized http en wikipedia org wiki Memoization这个功能 但我想让备忘录持久化 已经有几个与此相关的线程 但我不确定某些建议方法
  • avformat_open_input 返回值,NaCl 模块上的错误代码

    我正在尝试将 FFmpeg 移植到我的 NaCl 模块中 到目前为止 我的模块链接了 ffmpeg 和 SDL 库 它已经可以播放 YUV 格式的视频 该视频被直接加载到内存中并复制到 YUVOverlay 缓冲区中 这非常简单 现在 我想
  • Excel 转 PDF 无需 Office

    我需要在我正在开发的 Windows 应用程序中生成 PDF 报告 我通过将 xlsx 文件导出为 pdf 来完成此操作 不过 我目前正在为此使用互操作 我需要在不要求用户购买软件的情况下执行此操作 因此不需要 Microsoft Offi