如何在不使用 Excel 互操作库的情况下将 Excel 工作簿转换为 pdf?

Men*_*ano 6 c# pdf asp.net excel office-interop

我有一个 xlsx 文件,其中包含每个表格中的图表。我想将其另存为 pdf 文件。

我使用 excel.interop 制作了一个示例:

Application excelApplication = new Application();
Workbook wkb = excelApplication.Workbooks.Open(oSlideMaster._FILE_PATH, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, Microsoft.Office.Interop.Excel.XlCorruptLoad.xlNormalLoad);

var basePath = HttpRuntime.AppDomainAppPath;
wkb.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, ExportExcelToPdfFullPathWithoutExt);
Run Code Online (Sandbox Code Playgroud)

此代码适用于 Visual Studio,但不适用于未安装 MS Office 2007 或更高版本的服务器。

问题是:

我如何在不使用 excel.interop 库的情况下将(免费)excel 转换为 pdf(包括图表)。因为我不想在服务器端安装MS Office。

重点还在于:我尝试了一些 dll 将 excel 转换为 pdf,但我无法转换 CHARTS,只有我可以成功转换的文本。

谢谢。

下载文件

Excel 数据示例

VVN*_*VVN 0

尝试使用以下这段代码。

 excelworkBook.SaveAs(saveAsLocation);
 excelworkBook.Close();
 excel.Quit();
 bool flag=SaveAsPdf(saveAsLocation);
Run Code Online (Sandbox Code Playgroud)

其中saveAsLocation是完整路径execelworkBook。之后使用库将其转换为 pdf Spire.Xls。为此添加引用Spire.Xls,可以使用将其添加到您的项目中Manage Nuget Packages

private bool SaveAsPdf(string saveAsLocation)
  {
    string saveas = (saveAsLocation.Split('.')[0]) + ".pdf";
      try
        {
          Workbook workbook = new Workbook();
          workbook.LoadFromFile(saveAsLocation);

          //Save the document in PDF format

          workbook.SaveToFile(saveas, Spire.Xls.FileFormat.PDF);
          return true;
        }
       catch (Exception ex)
         {
           MessageBox.Show(ex.Message);
           return false;
         }
  }
Run Code Online (Sandbox Code Playgroud)

  • @VVN根据nuget上的许可证及其链接的网站,它不是免费的,它是有限的,只有商业版本才能超越限制?你能对此发表评论吗? (10认同)
  • 我刚刚尝试过,在转换后的 PDF 文档中收到下一条消息:“免费版本仅限于每个工作簿 5 个工作表,每个工作表 200 行。在读取或写入 XLSX、XLS 或 PDF 文件时会强制执行此限制。转换 Excel 时文件转换为 PDF 文件,您只能获取 PDF 文件的前 3 页。” xlsx 文档中的图表也尚未转换。因此,这并不是很多情况下的解决方案。 (4认同)