Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
-
Serg2010
Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
Доброго времени суток!
Господа, помогите, пожалуйста, написать код выполняющий извлечение нужной информации из текстовый файлов в файл Excel.
Ставлю задачу: в текстовые файлы я сохранил данные сертификатов проверки ключей. Их много, в каждом меня интересует, например СНИЛС:, Фамилия:, Должность:, Подразделение:, Организация: и т.д. Т.е. слева название с двоеточием, справа значение. Потом конец строки. Каждое значение с новой строки.
Один такой обработанный файл равен одной строчки в Excel, столбцы соответствуют искомым значениям.
Далее я просто возьму список сотрудников с их должностями и наложу на полученный файл Excel, при разногласии закажу новый сертификат. Типа сверки, глазами это делать рутинно и тяжело.
Спасибо. Думаю идея понятна.
Господа, помогите, пожалуйста, написать код выполняющий извлечение нужной информации из текстовый файлов в файл Excel.
Ставлю задачу: в текстовые файлы я сохранил данные сертификатов проверки ключей. Их много, в каждом меня интересует, например СНИЛС:, Фамилия:, Должность:, Подразделение:, Организация: и т.д. Т.е. слева название с двоеточием, справа значение. Потом конец строки. Каждое значение с новой строки.
Один такой обработанный файл равен одной строчки в Excel, столбцы соответствуют искомым значениям.
Далее я просто возьму список сотрудников с их должностями и наложу на полученный файл Excel, при разногласии закажу новый сертификат. Типа сверки, глазами это делать рутинно и тяжело.
Спасибо. Думаю идея понятна.
-
Iska
Re: Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
Serg2010, замечательно. Нам осталось только увидеть образцы этих текстовых файлов и потребной Вам результирующей Рабочей книги Microsoft Excel, упакованных в архив.
-
YuS_2
Re: Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
если говорить о powershell, то не проще ли напрямую из сертификатов формировать хэштаблицы и оперировать уже этими данными? Хоть в Excel, хоть сразу сравнивать списки...
Тут постановку задачи лучше скорректировать, чем решать её окольными путями...
Тут постановку задачи лучше скорректировать, чем решать её окольными путями...
-
megaloman
Re: Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
Цитата:
Далее я просто возьму список сотрудников с их должностями и наложу на полученный файл Excel,
список в бумажном виде ?
Наверное, это тоже таблица и, наверное, в Еxcel. Имхо, логично делать эту операцию (импорт файла и сравнение со списком) макросом в таблице Excel со списком сотрудников. Нужны образцы файлов: список сотрудников, данные сертификатов, в каком виде хотите видеть результат.
Далее я просто возьму список сотрудников с их должностями и наложу на полученный файл Excel,
список в бумажном виде ?
Наверное, это тоже таблица и, наверное, в Еxcel. Имхо, логично делать эту операцию (импорт файла и сравнение со списком) макросом в таблице Excel со списком сотрудников. Нужны образцы файлов: список сотрудников, данные сертификатов, в каком виде хотите видеть результат.-
v79italya
Re: Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
Serg2010, это можно сделать в Power Query. будут файлы - можно сказать конкретнее
-
Serg2010
Re: Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
Спасибо за отклик, выкладываю образцы
- Вложения
-
Iska
Re: Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
Serg2010, попробуйте так (на WSH):
Скрытый текст
[spoiler]Код: [/spoiler]
Путь к целевому каталогу задаётся аргументом скрипта (также можно просто перетянуть папку на скрипт в Проводнике). Если указанный каталог существует, в нём перебираются все текстовые файлы, внутри каждого из которых делается попытка выделения искомых значений по заданному шаблону. При удачном соответствии строка в новосозданной Рабочей книге Microsoft Excel заполняется найденными соответствиями. Поскольку предназначено для ручной работы — сохранение Рабочей книги оставил Вам на откуп.
P.S. См. также
Скрытый текст
[spoiler]Код: [/spoiler]
Код: Выделить всё
Option Explicit
Const xlContinuous = 1
Const xlThin = 2
Const xlAutomatic = &HFFFFEFF7
Dim strSourceFolder
Dim objFSO
Dim objFile
Dim strContent
Dim objRegExp
Dim objExcel
Dim objWorkBook
Dim objRange
If WScript.Arguments.Count = 1 Then
strSourceFolder = WScript.Arguments.Item(0)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strSourceFolder) Then
Set objRegExp = WScript.CreateObject("VBScript.RegExp")
With objRegExp
.IgnoreCase = True
.MultiLine = True
.Pattern = _
"Серийный номер\r\n" & _
"-{64}\r\n" & _
"((?:[\da-f]{2} ){15}[\da-f]{2})\r\n" & _
"[\s\S]*" & _
"Субъект\r\n" & _
"-{64}\r\n" & _
"СНИЛС: (\d{11})\r\n" & _
"ОГРН: (\d{13})\r\n" & _
"ИНН: (\d{12})\r\n" & _
"Адрес, улица: (.*?)\r\n" & _
"Отчество: .*?\r\n" & _
"Фамилия: .*?\r\n" & _
"Электронная почта: (.*?)\r\n" & _
"Город: (.*?)\r\n" & _
"Область: .*?\r\n" & _
"Страна: .*?\r\n" & _
"Должность: (.*?)\r\n" & _
"Подразделение: (.*?)\r\n" & _
"Организация: (.*?)\r\n" & _
"Имя: (.*?)\r\n"
End With
Set objExcel = WScript.CreateObject("Excel.Application")
Set objWorkBook = objExcel.Workbooks.Add()
Set objRange = objWorkBook.Worksheets.Item(1).Range("A1").Resize(1, 11)
With objRange
.NumberFormat = "@"
.Value = Array( _
"Серийный номер-19", _
"СНИЛС-48", _
"ОГРН-49", _
"ИНН-50", _
"Адрес, улица-51", _
"Электронная почта-54", _
"Город-55", _
"Должность-58", _
"Подразделение-59", _
"Организация-60", _
"Имя-61" _
)
End With
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
If StrComp(objFSO.GetExtensionName(objFile.Name), "txt", 0) = 0 Then
With objFSO.OpenTextFile(objFile.Path)
strContent = .ReadAll()
.Close
End With
Set objRange = objRange.Offset(1, 0)
If objRegExp.Test(strContent) Then
With objRange
.NumberFormat = "@"
.Value = Collection2Array(objRegExp.Execute(strContent).Item(0).Submatches)
End With
Else
WScript.Echo "Can't determine pattern in file [" & objFile.Name & "] correctly."
With objRange
.NumberFormat = "@"
.Value = "Error while parsing file [" & objFile.Name & "]"
End With
End If
Else
' Nothing to do
End If
Next
With objRange.Parent.UsedRange
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
.Columns.AutoFit
End With
objExcel.Visible = True
Set objRange = Nothing
Set objWorkBook = Nothing
Set objExcel = Nothing
Set objRegExp = Nothing
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 2
End If
Set objFSO = Nothing
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ "
WScript.Quit 1
End If
WScript.Quit 0
'-----------------------------------------------------------------------------
'-----------------------------------------------------------------------------
Function Collection2Array(objCollection)
ReDim arrArray(objCollection.Count - 1)
Dim i
For i = LBound(arrArray) To UBound(arrArray)
arrArray(i) = objCollection(i)
Next
Collection2Array = arrArray
End Function
'-----------------------------------------------------------------------------Путь к целевому каталогу задаётся аргументом скрипта (также можно просто перетянуть папку на скрипт в Проводнике). Если указанный каталог существует, в нём перебираются все текстовые файлы, внутри каждого из которых делается попытка выделения искомых значений по заданному шаблону. При удачном соответствии строка в новосозданной Рабочей книге Microsoft Excel заполняется найденными соответствиями. Поскольку предназначено для ручной работы — сохранение Рабочей книги оставил Вам на откуп.
P.S. См. также
Разбираем квалифицированные сертификаты X.509 в поисках ИНН, СНИЛС и ОГРН / Хабр
.
-
DJ Mogarych
Re: Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
Код:
Получается такой формат:
Код:
Но хоть убей не понимаю, как из этого сделать табличку csv, что-то затупил. Как из первого слова сделать свойство?
Код: Выделить всё
$src = gc "C:\temp\Пример обработки сертификата\Петров Иван Иванович.txt"
[array]$data = (($src |select -Skip 16 -First 3) -replace '-{2,}',': ') -join ''
$data += $src |select -Skip 47 -First 15Получается такой формат:
Код:
Код: Выделить всё
Серийный номер: 01 D1 1D 91 2F 01 1D 10 00 00 A5 35 21 B1 01 46
СНИЛС: 33333333333
ОГРН: 4444444444444
ИНН: 555555555555
Адрес, улица: пр. Ленина, 1
Отчество: Иван Иванович
Фамилия: Петров
Электронная почта: abc@xyz.ru
Город: Мирный
Область: 11 Прекрасная область
Страна: RU
Должность: начальник отдела
Подразделение: финансовый отдел
Организация: ООО "Цветочки"
Имя: Петров Иван ИвановичНо хоть убей не понимаю, как из этого сделать табличку csv, что-то затупил. Как из первого слова сделать свойство?
-
v79italya
Re: Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
Serg2010, попробуйте вариант в Power Query. Для обновления данных нажмите Ctrl+Alt+F5