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

问题描述 投票:2回答:3

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

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

Screen shot of issue in Excel

excel csv com progress-4gl 4gl
3个回答
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.

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,然后在Excel中打开CSV文件。)

csv1 csv2

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.