在创建正在使用的Excel工作表时使用分隔符4gl

时间:2018-01-02 06:59:29

标签: excel csv com progress-4gl 4gl

我有3个.txt个文件,我正在使用 COM-Handle 来创建Excel工作表。 任何人都可以帮我如何设置分隔符?我的Excel工作表已创建,但列不是逗号分隔。

请参阅我收到的文件的附件截图。我希望它在不同的栏目中。

Screen shot of issue in Excel

3 个答案:

答案 0 :(得分:1)

DEFINE VARIABLE chExcel AS COM-HANDLE NO-UNDO。     DEFINE VARIABLE chWorksheet1 AS COM-HANDLE NO-UNDO。     DEFINE VARIABLE chWorksheet2 AS COM-HANDLE NO-UNDO。     DEFINE VARIABLE chWorkbook1 AS COM-HANDLE NO-UNDO。     DEFINE VARIABLE chWorkbook2 AS COM-HANDLE NO-UNDO。     DEFINE VARIABLE iQtArq AS INTEGER NO-UNDO。     DEFINE VARIABLE iPOS AS INTEGER NO-UNDO。     DEFINE VARIABLE idx AS INTEGER NO-UNDO。

DEFINE TEMP-TABLE tt-arq
    FIELD nomeArq AS CHAR.
CREATE tt-arq.
tt-arq.nomeArq = "C:\damgra\excel\Test1.txt".
CREATE tt-arq.
tt-arq.nomeArq = "C:\damgra\excel\Test2.txt".
CREATE tt-arq.
tt-arq.nomeArq = "C:\damgra\excel\Test3.txt".


CREATE "excel.application" chExcel.

iQtArq = 0.

FOR EACH tt-arq.
    iQtArq = iQtArq + 1.

    IF iQtArq = 1 THEN DO:    
        chWorkbook1=chExcel:Workbooks:Open(tt-arq.nomeArq).
        chWorksheet1=chWorkbook1:Worksheets(1).
        chWorksheet1:NAME = "test" + STRING(iQtArq).
        NEXT.
    END.

    iPos = chWorkbook1:sheets:COUNT .

    chWorkbook2=chExcel:Workbooks:Open(tt-arq.nomeArq).

    DO idx = 1 TO (chWorkbook2:sheets:COUNT):
        iPos = iPos + 1.
        chWorksheet2=chWorkbook2:Worksheets(idx).
        chWorksheet2:NAME = "plan" + STRING(iPos).
    END.

    chWorksheet2=chWorkbook2:Worksheets(1).
    chWorksheet1=chWorkbook1:Worksheets(chWorkbook1:sheets:COUNT).
    chWorksheet1:Activate.
    chWorkbook2:Sheets:move(,chWorksheet1).    
END.

chWorksheet1=chWorkbook1:Worksheets(1).
chWorksheet1:Activate.

chExcel:visible=true.

IF valid-handle(chWorksheet1) THEN RELEASE OBJECT chWorksheet1.
IF valid-handle(chWorksheet2) THEN RELEASE OBJECT chWorksheet2.
IF valid-handle(chWorkbook1 ) THEN RELEASE OBJECT chWorkbook1 .
IF valid-handle(chWorkbook2 ) THEN RELEASE OBJECT chWorkbook2 .
IF valid-handle(chExcel )     THEN RELEASE OBJECT chExcel.

答案 1 :(得分:0)

我对Excel非常熟悉,但不是通过4GL生成Excel文档,但无论如何我都会冒险回答:

我怀疑您正在为Excel创建基于文本的文件(即非二进制或非XLS格式)。只需添加逗号就不会创建单独的列。

你可以尝试几件事:

  • 如果生成的文件确实是文本(即,您可以使用记事本打开它),请确保文件名的扩展名CSV,如c:\mypath\MyFile.csv

如果在Excel中打开了具有.csv扩展名的文件, 会将逗号分隔为列。

实施例

1)打开NOTEPAD.EXE

2)复制/粘贴本文:

This is my CSV File called: myFile.csv
This is column A,and this is column B, column C,D,E,F
If I need to include a comma in the text,"I wrap it, in quotes, in the CSV file."
A,B,C,D,E,F,G

3)保存名称为myFile.csv

的文件

4)关闭文件,然后双击将其打开。

(如果您的系统上的Excel不是associated with the .CSV file type类型,则可能需要打开Excel,然后在中打开的CSV文件> Excel。)

csv1 csv2

Excel不会AutoFit CSV文件中的列(或允许任何其他格式),但双击列头之间会自动调整。 csv3

另一个选项是使用Tab字符(ASCII Code 9),而不是使用逗号。 Excel也可以将制表符识别为列分隔符。

答案 2 :(得分:0)

Ashleedawg的答案可能是正确的,但是让我给出一些进步方面的背景:这很可能是你如何输出这个问题。如果您将TXT文件转换为电子表格,则取决于您是将其作为电子表格导出到Excel,然后您必须为要数据的单元格命名,或者将其导出为CSV和Comma应该被识别为分隔符,除非用户计算机专门使用另一个符号作为默认值,简而言之。因此,如果您希望生成CSV,则实际上不需要com-handle。 您可以使用vanilla OUTPUT TO并使其全部为文本,或者如果您使用com-handle,您很可能必须逐字段处理它(当然,您可以使用BUFFER-FIELD循环缓冲区中的字段使用(行整数,col整数)命名单元格,如果内存对我有好处的话。 无论如何,我们分析你如何导出它的一些代码将会对它产生更多的启示。