2012-04-09 15 views
8

का उपयोग कर xlsx फ़ाइलों में एक पृष्ठ पर फिटिंग शीट की समस्याएं मैं जावा के लिए अपाचे पीओआई लाइब्रेरी का उपयोग करके कुछ xlsx फ़ाइलों को बनाने की कोशिश कर रहा हूं और फ़ाइलों को बनाने के लिए सबकुछ ठीक काम कर रहा है।Apache POI लाइब्रेरी

समस्या तब आती है जब मैं भौतिक प्रिंटर का उपयोग करके उन फ़ाइलों को मुद्रित करना चाहता हूं। मैं अपनी कार्यपुस्तिकाओं में प्रत्येक शीट को एक पृष्ठ पर फिट करना चाहता हूं। मैं दस्तावेज में चारों ओर देखा और निम्नलिखित कोड काम करने की अपेक्षा की जाएगी:

 XSSFWorkbook wb = new XSSFWorkbook(); 
     XSSFSheet sheet = wb.createSheet("format sheet"); 

     PrintSetup ps = sheet.getPrintSetup(); 

     sheet.setAutobreaks(true); 

     ps.setFitHeight((short)1); 
     ps.setFitWidth((short)1); 

     for(int i = 0; i < 100; ++i){ 
      sheet.createRow(i); 
      sheet.getRow(i).createCell(0).setCellValue("Test " + i); 
     } 

     FileOutputStream output = new FileOutputStream("Test.xlsx"); 
     wb.write(output); 
     output.close(); 

लेकिन यह नहीं है ... जब मैं इसे प्रिंट करने का प्रयास, यह तीन पत्रक (क्या यह वास्तव में माना जाता हो जाएगा करने के लिए प्रिंट अगर मैंने प्रिंटसेटअप भाग का उपयोग नहीं किया है तो प्रिंट करने के लिए)। तो कोड बस कुछ भी नहीं करता है।

क्या कोई मुझे बता सकता है कि उस कोड के साथ क्या गलत है?

इसके अलावा, मेरे पास xlsx फ़ाइलों को प्रिंट करने के बारे में एक और सवाल है: मैं जानना चाहता हूं कि मेरे जावा प्रोग्राम से xlsx फ़ाइलों को प्रिंट करने का कोई तरीका है या नहीं, वास्तव में फ़ाइलों को खोलने और प्रिंट पर क्लिक किए बिना? की तरह wb.printAllSheetsInWorkbook(); या ऐसा कुछ।

उत्तर

19

बाद

ps.setFitHeight((short)1); 
ps.setFitWidth((short)1); 

उपयोग

sheet.setFitToPage(true); 
+0

मुझे यह एक ही समस्या के लिए लॉक करते हुए मिला लेकिन एनपीओआई (पीओआई के .NET पोर्ट) का उपयोग करके मैंने पाया कि मैंने थोड़ी सी भिन्नता के साथ वर्णित समकक्ष कार्रवाइयों का पालन किया; मैंने FitHeight = 0 सेट किया है ताकि एक्सेल "एक पृष्ठ में सभी कॉलम फिट करें"। एक जादू की तरह काम किया! धन्यवाद! – Rynkadink

+0

मेरी मदद करता है (http://stackoverflow.com/a/12072291/3587592)। – 0x5a4d

+2

शीट.सेटऑटोब्रेक्स (सत्य) जोड़ना; sheet.setFitToPage (सच) से पहले; मेरे लिए काम किया –

0

poi-3.8 और कार्यालय 2013 xls प्रारूप

के साथ काम करता है, तो मैं poi से चादर, सेटिंग्स डॉन बनाने के साथ काम नहीं करता काम नहीं करता यदि मैं ऑफिस एक्सेल में शीट खोलता/बनाता हूं, और पृष्ठ की ऊंचाई को कार्यालय एक्सेल से कहता हूं (कहें, 2 पेजों तक), और फिर सहेजें, और फिर इस शीट को पढ़ने के लिए प्रोग्राम चलाएं और ऊंचाई/चौड़ाई निर्धारित करें (कहें, 1 पृष्ठ), तो यह काम करता है।

ऐसा लगता है कि अगर हम पीओआई से शीट उत्पन्न करते हैं तो रिकॉर्ड लिखा नहीं जाता है। यदि रिकॉर्ड पहले से मौजूद है, तो poi इसे अपडेट करने में सक्षम है।

एक और अजीब चीज - Poi - 6kb से xls उत्पन्न करती है। कार्यालय में एक्सेल खोलें और सहेजें - 22 केबी। कार्यालय में एक्सेल खोलें, ऊंचाई/चौड़ाई समायोजित करें और सहेजें - 30 केबी। निश्चित रूप से पीओआई फ़ाइल को उत्पन्न करते समय रिकॉर्ड लिख नहीं रहा है। शायद अन्य जानकारी भी गायब है (22)

+1

हा! ऐसा क्यों है कि आप दिनों के लिए उत्तर के लिए शोध करते हैं और फिर जब आप कोई प्रश्न पोस्ट करते हैं, तो आप सेकंड में अपने आप जवाब देते हैं! ** शीट.सेटऑटोब्रेक्स (सत्य); ** काम करने के लिए सेटिंग की आवश्यकता है। – user3485166

संबंधित मुद्दे