Как мне отформатировать информацию, которую я выбрал из SbClient для загрузки в Excel в UniBasic? - PullRequest
0 голосов
/ 05 марта 2019

Следующий код находится в UniBasic, и я пытаюсь загрузить некоторые данные из SB-Client.Очевидно, что имена переменных не являются фактическими или чем-то подобным.На данный момент он выберет нужные данные и запишет их в файл 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

Теперь приведенный выше код успешно выбрал нужную мне информацию.Это в форме выбранного списка, однако.Используя данные, я продолжаю делать это:

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, однако он выдает ошибку (получено с помощью CALL TU.DDE.GET.ERROR(E_HANDLE, E_STATUS4)) о SavesList.Map или что-то вродетот.В настоящее время я нахожусь в процессе реализации цикла READNEXT for, однако я решил опубликовать этот вопрос здесь очень быстро, прежде чем пытаться это сделать.Пока что это не выглядит многообещающе.

Если вам, ребята, нужна дополнительная информация, просто дайте мне знать.

Редактировать: Вот пример данных, которые помещаются внутрь ячейки:

"Apple.Inc¦500.00¦100.00¦Verizon¦200.00¦100.00¦Просмотр прямой связи¦50000.00¦40000.00¦ПространствоX¦1000.00¦1000.000 "

^ Очевидно составленные данные ^

1 Ответ

0 голосов
/ 08 июля 2019

К сожалению, я не верю, что в настоящее время существует собственный инструмент UniBasic для прямой записи в .xlsx.Тем не менее, запись в формате .csv довольно доступна с UniBasic.Я часто делаю это, а затем просто использую Excel, если мне нужно переформатировать файл во что-то другое (например, .xslx).

Обычно, если я вывожу в csv, тогда я создам переменную, в которой метки значенийячейки с разделителями и метки атрибутов разделяют строки.Затем перед выводом файла я поменяю метки значений на запятые, а метки атрибутов на новую строку.

(В этом случае я пропустил шаг меток / запятых, просто разделив запятымиво-первых.)

Зная, что у вас есть три столбца данных в строке, что-то вроде этого приведет ваши данные в желаемый формат:

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 в файл.

...