|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel |
|
|
Любой язык - Импорт данные из текстового файла (*.txt) в таблицу Excel
|
Пользователь Сообщения: 84 |
Профиль | Отправить PM | Цитировать Доброго времени суток!
Господа, помогите, пожалуйста, написать код выполняющий извлечение нужной информации из текстовый файлов в файл Excel. Ставлю задачу: в текстовые файлы я сохранил данные сертификатов проверки ключей. Их много, в каждом меня интересует, например СНИЛС:, Фамилия:, Должность:, Подразделение:, Организация: и т.д. Т.е. слева название с двоеточием, справа значение. Потом конец строки. Каждое значение с новой строки. Один такой обработанный файл равен одной строчки в Excel, столбцы соответствуют искомым значениям. Далее я просто возьму список сотрудников с их должностями и наложу на полученный файл Excel, при разногласии закажу новый сертификат. Типа сверки, глазами это делать рутинно и тяжело. Спасибо. Думаю идея понятна. |
|
Отправлено: 22:54, 05-10-2019 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Serg2010, замечательно. Нам осталось только увидеть образцы этих текстовых файлов и потребной Вам результирующей Рабочей книги Microsoft Excel, упакованных в архив.
|
Отправлено: 22:59, 05-10-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 07:44, 06-10-2019 | #3 |
Старожил Сообщения: 235
|
Профиль | Отправить PM | Цитировать Serg2010, это можно сделать в Power Query. будут файлы - можно сказать конкретнее
|
Отправлено: 18:11, 07-10-2019 | #4 |
Пользователь Сообщения: 84
|
Профиль | Отправить PM | Цитировать Спасибо за отклик, выкладываю образцы
|
|
Отправлено: 22:36, 11-10-2019 | #5 |
Пользователь Сообщения: 84
|
Профиль | Отправить PM | Цитировать Образцы
|
Отправлено: 22:38, 11-10-2019 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Serg2010, попробуйте так (на WSH):
Скрытый текст
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 & """ <Source folder>" 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 в поисках ИНН, СНИЛС и ОГРН / Хабр. |
Отправлено: 09:18, 12-10-2019 | #7 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать $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 Должность: начальник отдела Подразделение: финансовый отдел Организация: ООО "Цветочки" Имя: Петров Иван Иванович |
------- Последний раз редактировалось DJ Mogarych, 12-10-2019 в 19:58. Отправлено: 19:52, 12-10-2019 | #8 |
Старожил Сообщения: 235
|
Профиль | Отправить PM | Цитировать Serg2010, попробуйте вариант в Power Query. Для обновления данных нажмите Ctrl+Alt+F5
|
Последний раз редактировалось v79italya, 18-10-2019 в 21:39. Отправлено: 20:32, 12-10-2019 | #9 |
Забанен Сообщения: 793
|
|
Отправлено: 21:23, 12-10-2019 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Свести в одну таблицу Excel данные из нескольких | skorbut | Скриптовые языки администрирования Windows | 1 | 21-02-2017 17:42 | |
VBS/WSH/JS - Импорт данных в форму Excel из xml файла | VictorST | Скриптовые языки администрирования Windows | 2 | 28-06-2015 12:52 | |
CMD/BAT - Сборка текстового файла из содержимого другого текстового файла | icomboy | Скриптовые языки администрирования Windows | 0 | 10-09-2013 15:17 | |
[решено] Вытащить ячейку из Excel файла и вставить в TXT файл | garanov | AutoIt | 2 | 23-05-2012 14:16 | |
Неправильно отображаются данные при вводе их из текстового файла! | Sox | Программирование и базы данных | 3 | 08-03-2006 17:23 |
|