Я хотел бы использовать принцип xagent для создания экспорта из представления Notes с помощью Apache Poi.Как создать несколько экспорта с помощью «xagent»?
Но вместо 1 экспортированного файла с несколькими листами я хотел бы создать несколько экспонатов, каждый из которых содержит только 1 лист.
Возможно ли? например
importPackage(java.lang);
importPackage(org.apache.poi.hssf.usermodel);
var fieldList = sessionScope.fList;
var sheetName = "viewData";
var workbookName = "WBViewData";
var vName = sessionScope.viewName;
var nc: NotesView = database.getView(vName);
var doc: NotesDocument;
var ndoc: NotesDocument;
doc = nc.getFirstDocument();
for (d = 1; d <= nc.getEntryCount(); d++) {
//Create a new workbook object from the poi library
var wb: HSSFWorkbook = new HSSFWorkbook();
//Create additional sheets using same syntax and different sheet name
var sheet1: HSSFSheet = wb.createSheet(sheetName);
//Create helper class and styles for dates
var createHelper: HSSFCreationHelper = wb.getCreationHelper();
var dateStyle: HSSFCellStyle = wb.createCellStyle();
dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
var headerStyle: HSSFCellStyle = wb.createCellStyle();
var headerFont: HSSFFont = wb.createFont();
headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
headerStyle.setFont(headerFont);
//Create the Column Header Rows
var row: HSSFRow = sheet1.createRow(0);
for (i = 0; i <= fieldList.length - 1; i++) {
var hCell: HSSFCell = row.createCell((java.lang.Integer)(i));
hCell.setCellValue(fieldList[i]);
hCell.setCellStyle(headerStyle);
}
var row: HSSFRow = sheet1.createRow(d);
// process document...
//Create the filename for the spreadsheet
var fileName = workbookName + ".xls";
// The Faces Context global object provides access to the servlet environment via the external content
var extCont = facesContext.getExternalContext();
// The servlet's response object provides control to the response object
var pageResponse = extCont.getResponse();
//Get the output stream to stream binary data
var pageOutput = pageResponse.getOutputStream();
// Set the content type and headers
pageResponse.setContentType("application/x-ms-excel");
pageResponse.setHeader("Cache-Control", "no-cache");
pageResponse.setHeader("Content-Disposition", "inline; filename=" + fileName);
//Write the output, flush the buffer and close the stream
wb.write(pageOutput);
pageOutput.flush();
pageOutput.close();
ndoc = nc.getNextDocument(doc);
doc.recycle();
doc = ndoc;
}
// Terminate the request processing lifecycle.
facesContext.responseComplete();
Как вы думаете, как это работает? На один HTTP-запрос должен отвечать несколько ответов, каждый из которых содержит один файл? Нет, это не сработает с использованием HTTP. Или один HTTP-запрос должен отвечать одним ответом, который содержит несколько файлов? Это может работать с использованием HTTP. Просто посылая байты всех файлов в тело ответа. Но как же операционная система отделяет файлы? Единственным вариантом будет использование ZIP-архива (одного файла), содержащего файлы рабочей книги. –
@AxelRichter Я знаю, что это звучит не логично, но если вам случается знать обходные пути. Конечно, я мог бы создавать документы в фоновом режиме и хранить их в документах Notes ... –