Что нового

Конвертирование txt в xls (файл Exel)

doctor

Новичок
Сообщения
9
Репутация
0
Есть код:
Код:
$hTxTFile = FileOpen('c:\1.txt', 0);<---- тут путь до входного текстового файла
$hCSVFile = FileOpen('c:\1.csv', 2);<---- тут путь до выходного файла в формате CSV
$iIND = 0;<---- Индикатор ошибки, для выхода из цикла
$sSummary = '';<---- Файл для накопления, в конце будет записан в CSV-файл
While $iIND <> -1;<---- Цикл
    $sLine = FileReadLine($hTxTFile);<---- Считываем каждую строку по очереди
    $iIND = @error;<---- Проверяем, не конец ли файла, если конец, то скрипт завершается
    $sNewLine = StringReplace($sLine, '||', !{TAB});<---- Замена в строке каждого символа "||" на выполнение симуляции нажатия "TAB"
    $sSummary &= $sNewLine & @CRLF;<---- Формирование суммарного файла.
WEnd
FileClose($hTxTFile);<---- Закрываем текстовый файл
FileWrite($hCSVFile, $sSummary);<---- Записываем необходимые данные в CSV-файл
FileClose($hCSVFile);<---- Закрываем CSV-файл
ShellExecute('c:\1.csv');<---- Запускаем Excel для просмотра результатов


В строчке $sNewLine = StringReplace($sLine, '||', !{TAB}); мы меняем при конвертации из txt в xls символ "||" на выполнение выполнение симуляции нажатия "TAB". Но ничего не получается. У кого есть какие соображения?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
doctor
обрамляй код соответствующим тегом
autoit.gif



Добавлено:
Сообщение автоматически объединено:

и кажись разделом ошибся
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
OffTopic:
откуда код? :smile:



Добавлено:
Сообщение автоматически объединено:

Код:
$sNewLine = StringReplace($sLine, '||', !{TAB})

поменяй на
Код:
$sNewLine = StringReplace($sLine, '||', @TAB)

а в текстовом файле точно есть эти палочки?
 
Автор
D

doctor

Новичок
Сообщения
9
Репутация
0
пояснение

палочки эти "||" точно есть.. В текстовом файле эти палочки разделяют между собой столбцы, а когда мы конвертируем в Exel, то надо чтобы вместо палочек информация переносилась в другой столбей (ячейку). Вот так... и @TAB я уже пробовал - не конает.. спасибо за помощь


Добавлено:
Сообщение автоматически объединено:

для тестирования можно создать TXT файл с текстом "привет||всем||моим||друзьям".. и в Exel мы должны получить 4 столбца с этим текстом соответственно
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Я создал файл xls c 4-мя ячейками привет всем моим друзьям
Затем Файл-Сохранить как-csv
Затем в блокноте открыл этот csv и увидел текст- привет;всем;моим;друзьям
т.е. разделитель - ;
Код:
$sNewLine = StringReplace($sLine, '||', ";")
 
Автор
D

doctor

Новичок
Сообщения
9
Репутация
0
благодарность

спасибо тебе большое, а у меня под старость лет уже соображалка неохти варит...
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Но если в исходной строке изначально присутствуют ";"
то все пойдет не так. Т.е. строка привет;1||привет;2||привет;3
в csv будет как привет;1;привет;2;привет;3
и в Экселе это будет 6 ячеек вместо 3-х.
Правильнее в csv должно быть с кавычками "привет;1";"привет;2";"привет;3"
 

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
38
Подведу итоги, надеюсь все не против.
Формат *.csv
де-юро
это формат называется "Табличный файл Windows, значения разделенные запятыми"
хотя де-факто значения разделяются точкой с запятой ;
в 99% случаев...
Чтобы содержимое удачно распознавалось не только MS Excel (где существуют дополнительные проверки содержания, и символы \\ | || , ; , а так же пробел и двойной апостроф, в определенных условиях интерпретируются как разделители)
Самый верный синтаксис *.csv выглядит так:
"значение1столбец";"значение2столбец";"значение3столбец"

И в этом конкретно случае правильнее будет парсировать и заменить знаки || в исходном *.txt заменить их на ";" ,
расширение на "csv"... все - Finish !!!
Excel да и прочие программы должны открывать без проблем.
 
Верх