Что нового

Запись ini в Excel

igorit

Новичок
Сообщения
25
Репутация
0
Всем привет!
Уверен что тема - дубль, но поиск не работает, на любой запрос выдает: "запрос должен быть длиннее двух символов.."
В общем что есть:
ini файл с содержанием:
Код:
[Time-1]
Time=9:43:10
Bat_Volt1=3,83
Current1=61,43
Bat_Volt2=5,44
Current2=87,29

.....

[Time-n]
Time=n
Bat_Volt1=n
Current1=n
Bat_Volt2=n
Current2=n
Нужно перевести все значения в Ексель в таком формате:
1nfxkptfqd.jpg

Если есть готовое решение, то просто дайте ссылку.
Заранее спасибо за помощь!
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
#include <Excel.au3>

Local $oExcel = _Excel_Open()
Local $oExcel2 = _Excel_BookNew($oExcel)

$sections = IniReadSectionNames (@ScriptDir & "\test.ini")
$params = IniReadSection (@ScriptDir & "\test.ini", $sections[1])

For $x=1 To UBound($params)-1	
	_ExcelWriteCell($oExcel2, $params[$x][0], 1, $x)
Next

For $i=1 To UBound($sections)-1
	$params = IniReadSection (@ScriptDir & "\test.ini", $sections[$i])
	For $x=1 To UBound($params)-1		
		_ExcelWriteCell($oExcel2, $params[$x][1], $i+1, $x)
	Next
Next

Func _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow, $iColumn = 1)
    If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
    If Not StringRegExp($sRangeOrRow, "[A-Z,a-z]", 0) Then
        If $sRangeOrRow < 1 Then Return SetError(2, 0, 0)
        If $iColumn < 1 Then Return SetError(2, 1, 0)
        $oExcel.Activesheet.Cells($sRangeOrRow, $iColumn).Value = $sValue
        Return 1
    Else
        $oExcel.Activesheet.Range($sRangeOrRow).Value = $sValue
        Return 1
    EndIf
EndFunc
 
Автор
I

igorit

Новичок
Сообщения
25
Репутация
0
Спасибо большое! Работает!
 
Автор
I

igorit

Новичок
Сообщения
25
Репутация
0
Еще раз добрый день. Возникли две проблемы:
1) автоматическое форматирование вводимых данных. То есть в ini-файле записано Current2=18.03, скрипт передает в Эксель 18.03, а Эксель форматирует содержимое ячейки в 18 Марта (18.03.2018). Если попробовать перевести тип ячейки в какой-либо другой то зачение ячейка становится вообще другим, типа: 45678.1. Можно ли как-то это исправить?

2) Скрипт считывает только 557-558 секций ini-файла, и выдает ошибку
Код:
!>21:55:22 AutoIt3.exe ended.rc:-1073741819
+>21:55:22 AutoIt3Wrapper Finished.
>Exit code: 3221225477    Time: 47.68




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

Первый вопрос решил:
Нужно снять галочку: Параметры - Дополнительно - Использовать системные разделители
и немного ниже вместо "," написать "."

А вот с второй проблемой пока что никак.
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Верх