Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Excel to PDF without office

I need to generate PDF reports in a windows application I'm working on, and I do this by exporting an .xlsx file to pdf. I'm currently using interop for this, however:

  • I need to do this without requiring the users to buy software, so no microsoft office excel.
  • I also can't use any heavy dependencies (like open/libre office).
  • the application is in .NET winforms and is local (not dependent on an internet connection).

Things I tried:

  • I have tried iTextSharp but this gets really complicated with things like overflowing columns.
  • Tried closedXML but there couldn't convert to PDF.
  • (As mentioned earlier) Tried interop but couldn't find a way to make it independent on office.

Help would be appreciated, thank you in advance :)

edits:

iTextSharp

I would use it except I need to export a big DataTable that has a variable number of columns (up to 30 columns), and if there are many columns then It gets really complicated to handle that column overflow, which was easy in interop.

Aspose

Appears to be too expensive, since I work for a small company that is currently very limited in resources.

like image 521
user2153497 Avatar asked Mar 10 '13 10:03

user2153497


1 Answers

Another good option is to use Spire.XLS. Though it will display evaluation warning at the top but you can get rid of it using FreeSpire.XLS. Below is the link for it https://www.nuget.org/packages/FreeSpire.XLS/

And below is the code snippet taken from

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"); 
        } 
    } 
} 
like image 108
THunter Avatar answered Oct 31 '22 05:10

THunter