Автор Тема: [Автоматизация] Корректировка файлов *.txt и с последующим сохранением в *.xls  (Прочитано 1837 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2135
  • Репутация: 459
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Ну понятно, между функцией и @error нельзя ничего вставлять.

Русское сообщество AutoIt


Оффлайн NiceScript [?]

  • Новичок
  • *
  • Сообщений: 8

  • Автор темы
  • Репутация: 0
  • Пол: Женский
    • Награды
  • Версия AutoIt: 3.3.14.0
Убрал, что тема решена, т.к. когда изменил формат вывода без мантисс, нашел более страшный глюк.

0.00000
 4.09952
 1.50048
 0.00000
-1.50064
-4.09936
 0.00000
 4.09952
 1.50048
 0.00000
-1.50048
-4.09952
 0.00000

Получаем *.xls следующего содержания:
*округление до 5 поставил в Round.

0
4,09952
1,50048
0
1,50064
4,09936
0
4,09952
1,50048
0
1,50048
4,09952
0

На лицо преобразование отрицательных чисел в положительные.



Добавлено: Март 11, 2017, 15:57:13
Ну понятно, между функцией и @error нельзя ничего вставлять.

А вы можете переделать ваш код под 2003 office?


Добавлено: Март 11, 2017, 16:15:55
Всё, допилил сам, уж больно жалко было столько времени потратить впустую (особенно, когда формат вывода переделывал). Спасибо ребята за отзывчивость!
Вот крайний код.

Код: AutoIt [Выделить]
#include <File.au3>
#include <Excel_2003.au3>

Global $aFileList, $oExcel, $sText, $aText

$aFileList = _FileListToArray(@ScriptDir, '*.txt', $FLTA_FILES)
If @error Then Exit

For $i = 1 To $aFileList[0]
    $sText = FileRead(@ScriptDir & '\' & $aFileList[$i])
    If @error Then ContinueLoop
    $aText = StringRegExp($sText, '(.\d+\.\d+).*', 3) ; тут точку добавил, чтобы знак "-" искался. Сцуко уже стал понимать ваш команды.
    If @error Then ContinueLoop
    For $j = 0 To UBound($aText) - 1
        $aText[$j] = StringReplace(Round($aText[$j], 5), '.', ',') ; Round() => округление до 9 символов после запятой
    Next
    $oExcel = _ExcelBookNew(0)
    If @error Then ContinueLoop
    _ExcelWriteArray($oExcel, 1, 1, $aText, 1)
    If Not @error Then _ExcelBookSaveAs($oExcel, @ScriptDir & '\' & StringTrimRight($aFileList[$i], 3) & 'xls', 'xls', 0, 1)
    _ExcelBookClose($oExcel, 0)
Next


 

« Последнее редактирование: Март 11, 2017, 16:15:55 от NiceScript, Причина: Объединение сообщений »

Оффлайн СН3СН2ОН [?]

  • Новичок
  • *
  • Сообщений: 76
  • Репутация: 10
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.2.8.1
Ради спортивного интереса сделал средствами только офиса.
Только для одного файла, без всяких udf
Код: AutoIt [Выделить]
$file = "c:\Users\1\Desktop\Новый текстовый документ.txt"
$xls = "c:\Users\1\Desktop\Новый текстовый документ.xls" ;2003
;$xls = "c:\Users\1\Desktop\Новый текстовый документ.xlsx" ;2007
$oExcel = ObjCreate("Excel.Application")
$oExcel.Visible = True
$oExcel.Workbooks.OpenText($file, Default, 1, Default, 1, False, True, False, False, False, False, False)
$vRange = $oExcel.ActiveSheet.Usedrange
$vRange.Replace(".", ",")
$oExcel.ActiveSheet.Columns("A").NumberFormat = "0,000000"
$oExcel.WorkBooks("Новый текстовый документ").SaveAs($xls,51)
$oExcel.Quit()
 

Япрофиэтосерьезно

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 645
  • Репутация: 106
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Импорт *.csv  файла в последующей программе  рассматривает запятую, как разделитель и разносит целую и дробную часть в разные элементы списка.
Просто измените расширение файла из "txt" в "csv" (по умолчанию разделитель ";")

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
1996 Просмотров
Последний ответ Август 04, 2010, 16:44:18
от Pavel
8 Ответов
9149 Просмотров
Последний ответ Январь 07, 2011, 19:22:48
от RUVATA
2 Ответов
1848 Просмотров
Последний ответ Май 28, 2011, 00:38:32
от CreatoR
20 Ответов
5418 Просмотров
Последний ответ Июнь 15, 2013, 10:51:05
от prokazzza
8 Ответов
3486 Просмотров
Последний ответ Март 05, 2014, 17:47:10
от ---Zak---
5 Ответов
2893 Просмотров
Последний ответ Февраль 22, 2015, 20:50:14
от Leonid Feclichev
0 Ответов
491 Просмотров
Последний ответ Февраль 22, 2015, 13:58:26
от madmasles
9 Ответов
2162 Просмотров
Последний ответ Март 09, 2015, 12:32:11
от madmasles
3 Ответов
939 Просмотров
Последний ответ Март 17, 2015, 16:49:47
от forc1k
3 Ответов
1628 Просмотров
Последний ответ Июль 12, 2015, 17:32:25
от Core2Duo76