2012-04-22 3 views
7

मैं सफलतापूर्वक excel फ़ाइल लेने के लिए और सी # में एक PDF फ़ाइल के रूप में निर्यात कर सकते हैंएक्सेल ExportAsFixedFormat पीडीएफ

private static void ExportWorkbookToPDF(string workbook, string output) 
{ 
    if (string.IsNullOrEmpty(workbook) || string.IsNullOrEmpty(output)) 
    { 
     throw new NullReferenceException("Cannot create PDF copy " + 
      "from empty workbook."); 
    } 

    Application excelApplication = new Application(); 
    excelApplication.ScreenUpdating = false; 
    excelApplication.DisplayAlerts = false; 
    excelApplication.Visible = false; 

    Workbook excelWorkbook = excelApplication.Workbooks.Open(
     Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + 
     "\\" + workbook); 

    if (excelWorkbook == null) 
    { 
     excelApplication.Quit(); 
     excelApplication = null; 
     excelWorkbook = null; 

     throw new NullReferenceException("Cannot create new excel workbook."); 
    } 

    try 
    { 
     excelWorkbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, 
      Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + 
      "\\" + output); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e.Message); 
     Console.ReadLine(); 
    } 
    finally 
    { 
     excelWorkbook.Close(); 
     excelApplication.Quit(); 
     excelApplication = null; 
     excelWorkbook = null; 
    } 
} 

क्या पैरामीटर या वस्तु मैं आदेश के बजाय पृष्ठ चौड़ाई के रूप में एक्सेल फ़ाइल को बचाने के लिए उपयोग करने के लिए की आवश्यकता क्यों है पेज ऊंचाई?

+0

पृष्ठ चौड़ाई और ऊंचाई प्रिंटर के गुण हैं। जब आप पीडीएफ उत्पन्न करते हैं तो आप इससे निपट नहीं पाते हैं, जब उपयोगकर्ता * प्रिंटिंग * पीडीएफ का चयन करता है। आमतौर पर लैंडस्केप मोड चुनना। इसे जल्दी करने की कोशिश कर गर्दन क्रैम्प का गंभीर मामला उत्पन्न होगा। –

+0

पृष्ठ चौड़ाई और ऊंचाई तक जहां तक ​​पीडीएफ दस्तावेज़ जाता है, प्रिंटर का उपयोग करने की आवश्यकता नहीं है। – bl4kh4k

उत्तर

13

मैं संपत्ति लैंडस्केप दृश्य के साथ एक पीडीएफ में अपनी कार्यपुस्तिका के निर्यात के लिए मजबूर करने के लिए आवश्यक मिल गया है।

try 
{ 
    ((Microsoft.Office.Interop.Excel._Worksheet) 
    excelWorkbook.ActiveSheet).PageSetup.Orientation = 
    Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape; 

    excelWorkbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, 
    Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + 
     "\\" + output); 
} 
+0

आप रॉक! निश्चित रूप से 1 अप। – bl4kh4k

+0

@ bl4kh4k मैं वह हूं जो आपको धन्यवाद देना चाहिए। मैंने कभी ऐसा करने के लिए सोचा नहीं है और मेरी – Steve

+0

की परेशानी की समस्या हल की है यदि आपके पास एकाधिक वर्कशीट हैं, तो संपत्ति एक्सेल वर्कबुक का उपयोग करें। उन्हें एक्सेस करने के लिए शीट्स। एक लूप का उपयोग करके, जांचें कि यह कास्टिंग से पहले 'चार्ट' या 'वर्कशीट' प्रकार है या फिर प्रति आइटम अभिविन्यास बदलें। – zeta

1

इस प्रयास करें:

object misValue = System.Reflection.Missing.Value; 
string paramExportFilePath = @"C:\Test2.pdf"; 
Excel.XlFixedFormatType paramExportFormat = Excel.XlFixedFormatType.xlTypePDF; 
Excel.XlFixedFormatQuality paramExportQuality = Excel.XlFixedFormatQuality.xlQualityStandard; 
bool paramOpenAfterPublish = false; 
bool paramIncludeDocProps = true; 
bool paramIgnorePrintAreas = true; 
if (xlWorkBook != null)//save as pdf 
    xlWorkBook.ExportAsFixedFormat(paramExportFormat, paramExportFilePath, paramExportQuality,  paramIncludeDocProps, paramIgnorePrintAreas, 1, 1, paramOpenAfterPublish, misValue); 

पैरामीटर paramIgnorePrintAreas=true पेज आकार बदलता है।

3
  1. 2007 माइक्रोसॉफ्ट ऑफिस सुइट सर्विस पैक 3 (SP3) को स्थापित करें http://www.microsoft.com/en-in/download/details.aspx?id=27838

  2. स्थापित 2007 Microsoft Office ऐड-इन: माइक्रोसॉफ्ट सहेजें PDF या XPS http://www.microsoft.com/en-in/download/details.aspx?id=7

के रूप में अनिवार्य: सेट माइक्रोसॉफ्ट एक्सपीएस दस्तावेज़ लेखक एस में डिफ़ॉल्ट प्रिंटर के रूप में erver। फ़ंक्शन निष्पादित क्योंकि ExportAsFixedFormat Microsoft XPS दस्तावेज़ लेखक पीडीएफ के लिए एक्सेल कन्वर्ट करने के लिए।

यह मेरे लिए काम कर रहा है।

+0

मुझे यह महसूस करने से पहले 2 दिन लग गए ... – umlcat

+0

उस के लिए सर्विस पैक आवश्यक नहीं है। केवल ऐड-इन इंस्टॉल करें। यदि ऐड-इन स्थापित नहीं है, तो एक्सेल इतना बुद्धिमान है कि यह "अमान्य पैरामीटर" अपवाद फेंक देगा! – Elmue