हालांकि यह सच है कि जेएसपी की बजाय सर्वलेट का उपयोग करके बाइनरी अटैचमेंट लिखना अधिक सामान्य है, यह निश्चित रूप से एक जेएसपी से बाइनरी अटैचमेंट लिखना संभव है। और ऐसा करने का लाभ यह है कि आपको web.xml को कॉन्फ़िगर करने या अपने एप्लिकेशन को पुनः लोड करने के बारे में चिंता करने की आवश्यकता नहीं है। यह आपके वेब सर्वर पर्यावरण के आधार पर एक महत्वपूर्ण विचार हो सकता है।
यहां एक उदाहरण जेएसपी है जो ब्राउज़र पर बाइनरी अटैचमेंट भेजने के लिए poi का उपयोग करता है।
<%@page import="org.apache.poi.hssf.usermodel.*" %><%@page import="java.io.*" %><%
// create a small spreadsheet
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue("Some text");
// write it as an excel attachment
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
wb.write(outByteStream);
byte [] outArray = outByteStream.toByteArray();
response.setContentType("application/ms-excel");
response.setContentLength(outArray.length);
response.setHeader("Expires:", "0"); // eliminates browser caching
response.setHeader("Content-Disposition", "attachment; filename=testxls.xls");
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
%>
महत्वपूर्ण चाल सुनिश्चित करें कि आपके सभी आयातों और "<%" है कि अपने कोड शुरू होता है से पहले अन्य निर्देशों के साथ केवल एक लाइन नहीं है बनाने के लिए है। अन्यथा, जेएसपी कुछ प्रारंभिक नई लाइनों को आउटपुट कर सकता है और आपके आउटपुट को दूषित कर सकता है।
इसके अलावा, मेरा सुझाव है कि आप हमेशा सामग्री की लंबाई निर्धारित करें। कुछ ब्राउज़र सही तरीके से काम नहीं करेंगे अगर यह सेट नहीं है। यही कारण है कि मैंने पहली बार अपनी स्प्रेडशीट को बाइट सरणी में आउटपुट किया, इसलिए मैं वास्तव में डेटा भेजने से पहले लंबाई निर्धारित कर सकता था।
स्रोत
2012-06-28 16:31:53
writableworkbook का हिस्सा है jexcel एपीआई सही है? अगर मैं पीओआई सही का उपयोग कर रहा हूं तो भी यह काम करना चाहिए? – user571099
@ user571099 कार्यपुस्तिका एक 'HSSFWorkbook' है, न कि' WritableWorkbook'। –
यह वही था जो मैं ढूंढ रहा था! मुझे लगता है कि यह जर्सी रीस्टफुल वेब सेवा के साथ भी किया जा सकता है? – Brian