2013-08-21 10 views
5

का उपयोग कर xlsm (Excel 2007) को लिखें, मैंने xlsm (Excel 2007) लिखने के लिए जावा फ़ाइल लिखी है।apache poi

अपाचे पीओआई लाइब्रेरी का उपयोग करके, xlsx फ़ाइल लिखना सफलता है। और लेखन xlsm फ़ाइल सफलता है। लेकिन xlsm फ़ाइल खोलने पर त्रुटि के कारण मैं xlsm फ़ाइल नहीं खोल सकता।

यह संभव Apache POI लाइब्रेरी का उपयोग xlsm फ़ाइल में लिखने का होगा?

यदि यह संभव है xlsm लिखने के लिए, कृपया गाइड लाइन Apache POI लाइब्रेरी का उपयोग कर xlsm फ़ाइल में लिखने के लिए प्रदान करते हैं। अगर आप अपने पत्र में मैक्रो की जरूरत नहीं है, तो आप बस के रूप में अच्छी विस्तार के रूप में उपयोग कर सकते हैं .xlsx

XSSFWorkbook workBook = new XSSFWorkbook(); 
XSSFSheet sheet = workBook.createSheet("Related_SRC"); 
String realName = "Test.xlsm"; 
File file = new File("C:\\sdpApp", realName); 
try { 
    FileOutputStream fileOutput = new FileOutputStream(file); 
     workBook.write(fileOutput); 
     fileOutput.close(); 
    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 

धन्यवाद

+1

पीओआई का कौन सा संस्करण आप उपयोग कर रहे हैं? – centic

+0

हम poi-3.8 संस्करण का उपयोग कर रहे हैं। – user2636961

उत्तर

12

Apache POI के प्रलेखन के अनुसार यह मैक्रो बना पाना संभव नहीं है: http://poi.apache.org/spreadsheet/limitations.html

हालांकि इसे पढ़ने के लिए और फिर से लिखने वाले मैक्रो और Apache POI सुरक्षित रूप से मैक्रो सुरक्षित करेगा फ़ाइलों संभव है।

String fileName = "C:\\new_file.xlsm"; 

try { 

    Workbook workbook; 
    workbook = new XSSFWorkbook(
     OPCPackage.open("resources/template_with_macro.xlsm") 
    ); 

    //DO STUF WITH WORKBOOK 

    FileOutputStream out = new FileOutputStream(new File(fileName)); 
    workbook.write(out); 
    out.close(); 
    System.out.println("xlsm created successfully.."); 

} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (InvalidFormatException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

कि यदि आपको कोई त्रुटि नहीं देंगे बनाई गई है फ़ाइल:

यहाँ एक उदाहरण है।

+1

मैं विशेष रूप से xlsm की शीट में परिणाम कैसे लिख सकता हूं। – Rik

2

XLSM, मैक्रो के साथ एक्सेल स्प्रेडशीट है।

तुम भी एक .xls फ़ाइल (अर्थात पुराने स्वरूप) HSSFWorkbook के माध्यम से उत्पादन कर सकता है, एक्सेल .xls को खोलने के लिए ठीक सक्षम होना चाहिए। इस दृष्टिकोण के साथ केवल सीमा यह है कि .xls पंक्तियों की संख्या में 65k तक सीमित है।

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