如何将 as400 假脱机文件转换为 excel (XLS) 文件



我是as400 Java开发(JT400)的新手。我得到了假脱机文件列表并读取了普通文本。现在我想将其转换为Excel(XLS)文件。我正在尝试使用 Java 将 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 

。等

有两个库支持直接转换为Excel:Apache POI和jExcel。

此外,JasperReports 是一个更高级别的报告库,除了 PDF 等之外,还支持导出到 Excel。

真正的问题是您希望如何将自由流动的格式(例如您的示例)映射到 Excel 等行和列格式?

如果你有一个假脱机文件,比如

 DATE TIME NAME
 12345678901234

您可以保存以归档您的假脱机。我使用的方式(希望有帮助)...从本质上讲,它只有一个字段,您需要按位置生成各种字段。您可以通过查询生成一个文件,例如 substr(field, 1, 4) 表示日期,Substr(field, 6, 4) 表示时间等等。对于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){...}
对我来说

最简单的是类似于下面的命令:

qsh cmd('touch -C 1252 mysplftxt.spl && catsplf -j 987654/myuser/myjob  mysplf 1 >mysplftxt.spl' )

Qshell catsplf 实用程序将假脱机文件放入 STDOUT。在上面的示例中,它被重定向到名为 mysplftxt.spl 的流文件,该文件没有路径,因此它会进入当前目录。由于我当前的目录映射到PC中的网络驱动器,因此我可以简单地在LibreOffice Calc中打开该文件(此处不需要Excel)。

仅此而已。

好吧,从技术上讲,它还有更多功能,因为我创建了一个名为CATSPLF的命令,该命令接受作业名称,假脱机文件名和编号等,并为我构造Qshell CMD()字符串。这使得以多种方式发出请求变得更加容易,例如作为 WRKSPLF 命令的注册用户函数和其他地方。

当然,当我这样做时,电子表格中没有"单元格"的定义。当我打开文件时,这需要手动完成。如果经常需要"细胞",除了手动之外,还有两个通用选项:开始编写程序来执行此操作或购买产品。

但是我很少看到在Excel(或Calc或任何其他电子表格程序)中打开假脱机文件有任何意义。我不会尝试类似的方式从 Windows 后台处理程序打开假脱机文件(这将是一场真正的噩梦),我也从未听说过其他人尝试这样做;所以我无法弄清楚为什么人们想在 AS/400 系列中如此频繁地这样做。几乎总是有更好的方法将数据放入电子表格中。

相关内容

  • 没有找到相关文章

最新更新