在 UniBasic 中如何格式化我从 SbClient 下载到 Excel 的信息?
How do I format the information I've selected from SbClient for download to Excel in UniBasic?
以下代码在 UniBasic 中,我正在尝试从 SB-Client 下载一些数据。显然,变量名称不是实际名称或类似名称。
截至目前,它将select我想要的数据,并将其写入Excel文件。问题是所有数据都在一个单元格中(准确地说是 A1),我需要它实际上是 excel 文件的形式(每个元素都在不同的单元格中)。这是将数据放入 Excel 文件的代码,之后是放入其中的数据示例。
INFORMATION.DOWNLOAD:
E_APPLICATION = "Excel"
E_TOPIC = "C:/ExcelFiles/File.xlsx"
E_ITEMNAME = "R1C1:R50C50"
E_TIMEOUT = 200
EXECUTE ("SELECT MYFILE CUSTOMERS AMOUNT_DUE AMOUNT_PAID SAMPLE 25")
READSELECT E_DATA THEN
END
现在上面的代码已经成功select编辑了我想要的信息。但是,它采用 selected 列表的形式。使用数据,然后我继续这样做:
CALL TU.DDE.CONNECT(E_APPLICATION, E_TOPIC, E_HANDLE, E_STATUS)
CALL TU.DDE.WRITE(E_HANDLE, E_ITEMNAME, E_TIMEOUT, E_DATA, E_STATUS2)
CALL TU.DDE.DISCONNECT(E_HANDLE, E_STATUS3)
现在,我尝试使用 READLIST
,但它会抛出一个关于 SavesList.Map 或类似错误的错误(使用 CALL TU.DDE.GET.ERROR(E_HANDLE, E_STATUS4)
获得)。我目前正在实施一个 READNEXT
for 循环,但是,我想在尝试之前我会 post 这个问题真的很快就在这里。到目前为止,它看起来也不乐观。
如果你们需要更多信息,请告诉我。
编辑:这是放入单元格中的数据示例:
"Apple.Inc¦500.00¦100.00¦Verizon¦200.00¦100.00¦Straight Talk¦50000.00¦40000.00¦SpaceX¦1000.00¦1000.000"
^明显是编造数据^
不幸的是,我认为目前没有用于直接写入 .xlsx 的本机 UniBasic 工具。但是,使用 UniBasic 可以相当方便地写入 .csv 格式。我经常这样做,然后如果我需要将文件重新格式化为其他格式(例如 .xslx),则只需使用 Excel。
通常,如果我要输出到 csv,那么我将构建变量,其中值标记分隔单元格,属性标记分隔行。然后在输出我的文件之前,我会将值标记更改为逗号,并将属性标记更改为新行。
(在这种情况下,我跳过了值 marks/commas 的步骤,首先简单地用逗号分隔。)
知道你每行有三个数据列,像这样的东西会让你的数据变成所需的格式:
EXECUTE ("SELECT MYFILE CUSTOMERS AMOUNT_DUE AMOUNT_PAID SAMPLE 25")
CSV_DATA = ''
IX = 0
LOOP
READNEXT CUSTOMER ELSE EXIT ;* don't have any more data lines so exit loop
READNEXT AMOUNT_DUE ELSE AMOUNT_DUE = ''
READNEXT AMOUNT_PAID ELSE AMOUNT_PAID = ''
IX += 1
CSV_DATA<IX> = CUSTOMER :',': AMOUNT_DUE :',': AMOUNT_PAID
REPEAT
然后我通常会按照此定义一些内容以将数据转换为 CSV 格式:
EQU NEWLINE TO CHAR(13):CHAR(10) ;* this is for Windows
SWAP AM WITH NEWLINE IN CSV_DATA
然后您可以使用其余代码将 CSV_DATA 写入文件。
以下代码在 UniBasic 中,我正在尝试从 SB-Client 下载一些数据。显然,变量名称不是实际名称或类似名称。 截至目前,它将select我想要的数据,并将其写入Excel文件。问题是所有数据都在一个单元格中(准确地说是 A1),我需要它实际上是 excel 文件的形式(每个元素都在不同的单元格中)。这是将数据放入 Excel 文件的代码,之后是放入其中的数据示例。
INFORMATION.DOWNLOAD:
E_APPLICATION = "Excel"
E_TOPIC = "C:/ExcelFiles/File.xlsx"
E_ITEMNAME = "R1C1:R50C50"
E_TIMEOUT = 200
EXECUTE ("SELECT MYFILE CUSTOMERS AMOUNT_DUE AMOUNT_PAID SAMPLE 25")
READSELECT E_DATA THEN
END
现在上面的代码已经成功select编辑了我想要的信息。但是,它采用 selected 列表的形式。使用数据,然后我继续这样做:
CALL TU.DDE.CONNECT(E_APPLICATION, E_TOPIC, E_HANDLE, E_STATUS)
CALL TU.DDE.WRITE(E_HANDLE, E_ITEMNAME, E_TIMEOUT, E_DATA, E_STATUS2)
CALL TU.DDE.DISCONNECT(E_HANDLE, E_STATUS3)
现在,我尝试使用 READLIST
,但它会抛出一个关于 SavesList.Map 或类似错误的错误(使用 CALL TU.DDE.GET.ERROR(E_HANDLE, E_STATUS4)
获得)。我目前正在实施一个 READNEXT
for 循环,但是,我想在尝试之前我会 post 这个问题真的很快就在这里。到目前为止,它看起来也不乐观。
如果你们需要更多信息,请告诉我。
编辑:这是放入单元格中的数据示例:
"Apple.Inc¦500.00¦100.00¦Verizon¦200.00¦100.00¦Straight Talk¦50000.00¦40000.00¦SpaceX¦1000.00¦1000.000"
^明显是编造数据^
不幸的是,我认为目前没有用于直接写入 .xlsx 的本机 UniBasic 工具。但是,使用 UniBasic 可以相当方便地写入 .csv 格式。我经常这样做,然后如果我需要将文件重新格式化为其他格式(例如 .xslx),则只需使用 Excel。
通常,如果我要输出到 csv,那么我将构建变量,其中值标记分隔单元格,属性标记分隔行。然后在输出我的文件之前,我会将值标记更改为逗号,并将属性标记更改为新行。
(在这种情况下,我跳过了值 marks/commas 的步骤,首先简单地用逗号分隔。)
知道你每行有三个数据列,像这样的东西会让你的数据变成所需的格式:
EXECUTE ("SELECT MYFILE CUSTOMERS AMOUNT_DUE AMOUNT_PAID SAMPLE 25")
CSV_DATA = ''
IX = 0
LOOP
READNEXT CUSTOMER ELSE EXIT ;* don't have any more data lines so exit loop
READNEXT AMOUNT_DUE ELSE AMOUNT_DUE = ''
READNEXT AMOUNT_PAID ELSE AMOUNT_PAID = ''
IX += 1
CSV_DATA<IX> = CUSTOMER :',': AMOUNT_DUE :',': AMOUNT_PAID
REPEAT
然后我通常会按照此定义一些内容以将数据转换为 CSV 格式:
EQU NEWLINE TO CHAR(13):CHAR(10) ;* this is for Windows
SWAP AM WITH NEWLINE IN CSV_DATA
然后您可以使用其余代码将 CSV_DATA 写入文件。