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

时间:2016-02-16 10:53:17

标签: c# asp.net excel pdf 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);

此代码适用于visual studio,但在没有安装ms office 2007或更高版本的服务器上它不起作用。

问题是:

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

重点是: 我尝试了一些dll将excel转换为pdf,但我无法转换CHARTS只能成功转换的文本。

感谢。

下载file

Sample excel data

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码。

 excelworkBook.SaveAs(saveAsLocation);
 excelworkBook.Close();
 excel.Quit();
 bool flag=SaveAsPdf(saveAsLocation);

在此saveAsLocationexecelworkBook的完整路径。然后使用库Spire.Xls将其转换为pdf。为此添加引用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;
         }
  }

答案 1 :(得分:0)

http://www.gemboxsoftware.com/Spreadsheet/downloads

下载dll

添加参考和代码

using System;
using System.Drawing;
using System.Text;
using GemBox.Spreadsheet;

class Sample
{
    [STAThread]
    static void Main(string[] args)
    {
        // If using Professional version, put your serial key below.
        SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");

        ExcelFile ef = ExcelFile.Load("test.xlsx");

        ef.Save("Convert.pdf");
    }
}