2012-04-17 11 views
24

कॉलिंग सरल toBytes() बाइट्स का उत्पादन करता है लेकिन चेतावनी चेतावनी देता है।मैं POI HSSFWorkbook को बाइट्स में कैसे परिवर्तित कर सकता हूं?

खोया दस्तावेज़ जानकारी

चारों ओर Googling मुझे इस link दिया और कार्यपत्रक और POI HOW-TO के लिए Javadocs को देखकर इसी तरह की बातों का कहना है। मूल रूप से मुझे कुछ जानकारी खोए बिना Bytes नहीं मिल सकता है और इसके बजाय write विधि का उपयोग करना चाहिए।

जबकि लेखन ठीक काम करता है मुझे वास्तव में बाइट्स भेजने की आवश्यकता है। क्या मैं ऐसा कर सकता हूं? यह किसी भी चेतावनी के साथ बाइट प्राप्त होता है।

उत्तर

53

कि मेलिंग सूची पोस्ट के रूप में कहा

लागू HSSFWorkbook.getBytes() आवश्यक डेटा के सभी वापस नहीं करता है फिर से करने के लिए एक पूर्ण Excel फ़ाइल का निर्माण।

बाइट सरणी प्राप्त करने के लिए आप ByteArrayOutputStream के साथ लेखन विधि का उपयोग कर सकते हैं।

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
try { 
    workbook.write(bos); 
} finally { 
    bos.close(); 
} 
byte[] bytes = bos.toByteArray(); 

(close कॉल वास्तव में एक ByteArrayOutputStream के लिए आवश्यक नहीं है, लेकिन imho यह अच्छा शैली मामला इसके बाद में धारा एक अलग तरह के लिए बदल में वैसे भी शामिल करने के लिए है।)

9

कैसे के बारे में:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
workbook.write(baos); 
byte[] xls = baos.toByteArray(); 

पूर्ण एक्सेल फ़ाइल प्राप्त करने के लिए, आपको लेखन (आउटपुटस्ट्रीम) विधि को कॉल करना होगा। यदि आप उस से बाइट चाहते हैं, तो बस एक ByteArrayOutputStream

दें