gpt4 book ai didi

java - 如何使用 "xagent"创建多个导出?

转载 作者:行者123 更新时间:2023-11-30 07:59:05 26 4
gpt4 key购买 nike

我想使用 xagent 原理使用 Apache Poi 从 Notes View 创建导出。

但是我想创建多个导出文件,而不是 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();

最佳答案

问题与 XPage 或 POI 无关,而是对 Web 交互工作原理的基本理解。您发送到任何服务器的每个请求都只有一个 Stream 来返回数据。可以使用附件 header 将该流重定向到文件。它仍然是一股流。所以如果你想在一个流中有多个文件,你需要有一个可以容纳它的流目标。 http协议(protocol)没有。一个请求产生一个响应。然而,您可以做的是将您的个人文件写入一个 zip 文件并将该文件返回给请求。

更新但是您真正想做的是:让您的服务器端准备好根据查询字符串一次创建一个 xls。然后在您想要获取文件的页面中,您分别对每个文件使用 ajax 请求,并使用 html5 文件 api 在本地写回结果。因此,您不是试图在服务器上解决这个问题,而是让客户端处于主导地位。在那里你可以显示动画,对每次完成使用react等。

关于java - 如何使用 "xagent"创建多个导出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39700156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com