Как автоматически организовать данные из текстового файла в электронную таблицу?

Как автоматически организовать данные из текстового файла в электронную таблицу?

У меня есть такой текстовый файл:

необработанные данные

и я хотел бы организовать в Excel следующим образом:

данные Excel

Я мог бы сделать это вручную для двух записей данных, но я хотел бы иметь возможность автоматизировать это для большего масштаба. То, что я пытался сделать до сих пор, это ввести данные в Excel, используя его встроенную функцию, но это то, где я застрял. Я пытался транспонировать столбцы в строки, но это не организует их так аккуратно, как я хочу. Мне нужно сделать кодирование или есть встроенная функция? Если мне нужно кодирование, может ли кто-нибудь указать мне правильное направление?

Спасибо за ваше время!

решение1

Я бы попробовал надстройку Power Query для этого. Она имеет мощные команды для управления данными. Внизу есть функции, но вы можете добиться многого, просто нажимая кнопки в окне Power Query. Визуальная работа в Power Query обычно намного проще, чем кодирование в VBA.

Я попробовал это конкретное испытание и у меня получилось. Вы можете скачать и использовать мой демо-файл из моего OneDrive:

http://1drv.ms/1AzPAZp

Это файл: Демонстрация Power Query — реорганизация строк в столбцы.xlsx

Как описано в листе ReadMe, мне нужно было написать только одну простую функцию — остальное было просто кликать по пользовательскому интерфейсу. Power Query великолепен!

Чтобы использовать его против собственных текстовых файлов, просто отредактируйте первый шаг в запросе, чтобы он указывал на ваш файл. Кстати, вы даже можете заставить Power Query циклически перебирать файлы в папке, если это необходимо.

решение2

Powershell грязным способом.

$xlsFile="c:\temp\your.xlsx"
$excel = new-object -comobject excel.application
$excel.displayAlerts = $false
$wbs=$excel.workbooks.open($xlsFile)
$ws=$wbs.sheets.item(1)
$ws.cells.item(1,1) = "Customer"
$ws.cells.item(1,2) = "Apples"
$ws.cells.item(1,3) = "Bananas"
$ws.cells.item(1,4) = "Oranges"
$row = 1
$reader = [System.IO.File]::OpenText("c:\temp\your.txt")
try {
    while ($true) {
        $line = $reader.ReadLine()
        if ($line -eq $null) { break }
        if ($line.length -lt 3) {continue}
        switch ($line.substring(0,3))
            {
                "Cus" {
                    $val="'"+$line.split("#:")[1]
                    $row++
                    $ws.cells.item($row,1) = $val
                }
                "App" {
                    $val=$line.split(" ")[1]
                    $ws.cells.item($row,2) = $val
                }
                "Ban" {
                    $val=$line.split(" ")[1]
                    $ws.cells.item($row,3) = $val              
                }
                "Ora" {
                    $val=$line.split(" ")[1]
                    $ws.cells.item($row,4) = $val
                }
            }
    }
}
finally {
    $reader.Close()
}
$wbs.saveas($xlsFile)
$wbs.close()
$excel.quit()
$ws = $null
$wbs = $null
$excel = $null

Связанный контент