我是as400 Java开发(JT400)的新手。我得到假脱机文件列表并读取正常文本。现在我想将其转换为excel(XLS)文件。我正在尝试使用Java.but im faild将AS400假脱机文件转换为excel(XLS)文件。谁知道怎么做?我可以直接从as400转换它吗?有谁知道如何使用Java将这个假脱机文件(或此文本文件)转换为excel文件?
提前感谢!
5722WDS V5R3M0 030905 RN IBM ILE RPG XXXXXXXXX/XXXX SSSS 10/01/11 06:19:46 Page 1
Command . . . . . . . . . . . . : CRTBNDRPG
Issued by . . . . . . . . . . : XXXXXXXXX
Program . . . . . . . . . . . . : CUSR
Library . . . . . . . . . . . : XXXXXXXXX
Text 'description' . . . . . . . : *SRCMBRTXT
Source Member . . . . . . . . . : CUSR
Source File . . . . . . . . . . : XXXXXXXXX
Library . . . . . . . . . . . : XXXXXXXXX
CCSID . . . . . . . . . . . . : 273
Text 'description' . . . . . . . :
Last Change . . . . . . . . . . : 10/01/11 06:19:41
Generation severity level . . . : 10
Default activation group . . . . : *YES
Compiler options . . . . . . . . : *XREF *GEN *NOSECLVL *SHOWCPY
*EXPDDS *EXT *NOSHOWSKP *NOSRCSTMT
*DEBUGIO *NOEVENTF
Debugging views . . . . . . . . : *SOURCE
Output . . . . . . . . . . . . . : *PRINT
Optimization level . . . . . . . : *NONE
Source listing indentation . . . : *NONE
Type conversion options . . . . : *NONE
Sort sequence . . . . . . . . . : *HEX
Language identifier . . . . . . : *JOBRUN
Replace program . . . . . . . . : *YES
User profile . . . . . . . . . . : *USER
Authority . . . . . . . . . . . : *LIBCRTAUT
Truncate numeric . . . . . . . . : *YES
Fix numeric . . . . . . . . . . : *NONE
Target release . . . . . . . . . : *CURRENT
Allow null values . . . . . . . : *NO
Define condition names . . . . . : *NONE
Enable performance collection . : *PEP
Profiling data . . . . . . . . . : *NOCOL
Licensed Internal Code options . :
Generate program interface . . . : *NO
Include directory . . . . . . . :
Preprocessor options . . . . . . : *NONE
5722WDS V5R3M0 030905 RN IBM ILE RPG XXXXXXXXX/XXXX SSSS 10/01/11 06:19:46 Page 2
Line <---------------------- Source Specifications ----------------------------><---- Comments ----> Do Page Change Src Seq
Number ....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+...10 Num Line Date Id Number
S o u r c e L i s t i n g
1 110917 000100
2 FCUS00D CF E WORKSTN 110917 000200
*--------------------------------------------------------------------------------------------*
* RPG name External name *
* File name. . . . . . . . . : CUS00D XXXXXXXXX/SSSSSS *
* Record format(s) . . . . . : RECORD RECORD *
*--------------------------------------------------------------------------------------------*
3 FCUSMAS01 UF A E DISK 110917 000300
4 110917 000400
5 /Free 110917 000500
6 110917 000600
*--------------------------------------------------------------------------------------------*
* RPG name External name *
* File name. . . . . . . . . : CUSMAS01 XXXXXXXXX/SSSSSS *
* Record format(s) . . . . . : CUSREC CUSREC *
*--------------------------------------------------------------------------------------------*
7=IRECORD 1000001
*--------------------------------------------------------------------------------------------* 1
* RPG record format . . . . : RECORD * 1
* External format . . . . . : RECORD : XXXXXXXXX/SSSSSS * 1
*--------------------------------------------------------------------------------------------* 1
8=I N 1 1 *IN03 1000002
9=I N 2 2 *IN06 1000003
10=I S 3 8 0$CUSID 1000004
11=I A 9 33 $CUSNAME 1000005
12=I A 34 58 $CUSADD1 1000006
13=I A 59 83 $CUSADD2 1000007
14=I A 84 108 $CUSADD3 1000008
15=I S 109 118 0$TELNO 1000009
16=I S 119 133 3$CRDLMT 1000010
17=ICUSREC 2000001
*--------------------------------------------------------------------------------------------* 2
* RPG record format . . . . : CUSREC * 2
* External format . . . . . : CUSREC : XXXXXXXXX/SSSSSS * 2
*--------------------------------------------------------------------------------------------* 2
18=I P 1 4 0CUSID 2000002
19=I A 5 29 CUSNAME 2000003
20=I A 30 54 CUSADD1 2000004
21=I A 55 79 CUSADD2 2000005
22=I A 80 104 CUSADD3 2000006
23=I S 105 114 0TELNO 2000007
24=I S 115 129 2CRDLMT 2000008
25 Exfmt record; 110917 000700
26 Dow Not *IN03; B01 110924 000800
27 If $CUSID <> *Zeros; B02 111001 000801
28 Chain (CUSID) CUSREC; 02 111001 000802
29 If %Found(CUSMAS01); B03 111001 000803
答案 0 :(得分:3)
有两个支持直接转换为Excel的库:Apache POI和jExcel。
此外,JasperReports是一个更高级别的报告库,除PDF等外,还支持导出到Excel。
真正的问题是,您希望如何将自由流动格式(例如您的示例)映射为行和列格式(如Excel)?
答案 1 :(得分:0)
如果你有一个假脱机文件,如
DATE TIME NAME
12345678901234
您可以保存以存档您的假脱机。 我使用的方式(希望它有帮助)...... 它只有一个字段,你需要按位置生成各个字段。 你可以通过查询一个文件,比如substr(field,1,4)for date,substr(field,6,4)for time等等。 使用java我更喜欢使用Apache POI,就像这样..
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
..........................
wbk=new SXSSFWorkbook(500);
sheet=vbk.createSheet("book 1");
try{
Row rowhead=sheet.createRow(0);
rowhead.createCell(0).setCellValue("Hello");
...
<Here you fill the Excel with the resultset of your query
to the AS400 file using JT400>
...
FileOutputStream fileOut = new FileOutputStream(excelPath);
wbk.write(fileOut);
fileOut.flush();
fileOut.close();
}catch(Exception e){...}
答案 2 :(得分:0)
对我来说最简单的是一个类似于此的命令:
qsh cmd('touch -C 1252 mysplftxt.spl && catsplf -j 987654/myuser/myjob mysplf 1 >mysplftxt.spl' )
Qshell catsplf utility将假脱机文件放入STDOUT。在上面的示例中,它被重定向到没有路径的名为mysplftxt.spl
的流文件,因此它进入当前目录。由于我的当前目录映射到我的PC中的网络驱动器,我可以在LibreOffice Calc中打开该文件(这里不需要Excel)。
这就是它的全部内容。
从技术上讲,还有更多内容,因为我创建了一个名为CATSPLF的命令,它接受作业名,假脱机文件名和编号等,并为我构造Qshell CMD()字符串。这使得以多种方式发出请求变得容易得多,例如WRKSPLF命令和其他地方的注册用户函数。
当然,没有定义&#34;细胞&#34;在我这样做的电子表格中。这需要在我打开文件时手动完成。如果&#34;细胞&#34;需要定期,手动以外有两个一般选项:开始编写程序或购买产品。
但我很少看到在Excel(或Calc或任何其他电子表格程序)中打开假脱机文件有任何意义。我不会尝试类似地从Windows假脱机程序打开一个假脱机文件(这将是一个真正的噩梦),我也从来没有听说过其他任何人试图这样做;所以我无法弄清楚为什么人们想要在AS / 400系列中经常这样做。几乎总有更好的方法将数据导入电子表格。