XPages 在 SSJS 中创建 Excel

XPages Create Excel in SSJS

我想在 SSJS 中创建一个 excel 文件。它在 LotusScript 中也是一样的(您可以在这个问题的底部找到代码示例。) 我开始了这个,但我还没有完成:(

var response = facesContext.getExternalContext().getResponse(); 
var DataWriter = facesContext.getResponseWriter(); 
response.setContentType("application/vnd.ms-excel");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Content-Disposition","attachment; filename='ExportedExcel1.xls'");

DataWriter.write("Denenee");
DataWriter.endDocument();



xlsFile =Environ("Temp") & "\firstExcel.xls"
Call object.ExtractFile( xlsFile )
Set excelappl = Nothing
Set excelappl = CreateObject("Excel.Application")
ver$ = excelappl.Version    
Select Case Left(ver$,2)
Case "9.":
Set excelappl = CreateObject( "Excel.Application.9" )       
Case "10":
Set excelappl = CreateObject( "Excel.Application.10" )      
Case "11":
Set excelappl = CreateObject( "Excel.Application.11" )      
Case "12":
Set excelappl = CreateObject( "Excel.Application.12" )  
Case "13":
Set excelappl = CreateObject( "Excel.Application.13" )  
End Select
excelappl.visible = False
Set wb = excelappl.Workbooks.Open(xlsFile)
If wb Is Nothing Then
Error 10003, "Hata: Dosya bulunamadı."
End If
Set excelSheet = excelappl.workbooks(1).Worksheets(1)
Call excelsheet.Activate
row = 1

XPages 的 SSJS 在服务器上运行。在服务器上使用像 LotusScript 的 CreateObject("Excel.Application") 这样的 OLE 对象不是一个好主意。

改用POI 4 XPages。它允许您以批准的方式创建 Excel 文件。

您的 LS 代码提示 (extractObject) 您的 Excel 文件实际上是一个附件。在这种情况下,您的方法会有所不同。

写小Javaclass。 NotesEmbeddedObject 中有一个方法可以将对象作为输入流。使用 Apache Commons 将该输入流泵入 XPages 输出流。让您的生活更轻松。

请记住:要使用 OutputStream,您不能使用 Writer。两个open只能有一个