|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] как внести коррективы в .xls файл используя .BAT |
|
CMD/BAT - [решено] как внести коррективы в .xls файл используя .BAT
|
Новый участник Сообщения: 33 |
День добрый Уважаемые знатоки, всеми нами любимого, супер-форума OSZone!
Уважаемый "Боженька кодеров" megaloman, ну и конечно же Iska, дорогие... Излагаю суть: 1) Необходимо внести коррективы в .xls-файл по средствам .BAT, .CMD либо .VBS. Лучше наверное будет .VBS, потому как на BAT-ники многие антивирусы попросту ругаются. А там, конечно же, на ваше усмотрение, Уважаемые. Почему коррективы? Потому, как столбцы в .xls изначально размечены по ширине и присутствует некая шапка-заголовок. Информация заносится "в строку", в каждую ячейку, (слева на право :D), как в текстовом, так и в числовом виде (зависит от типа столбца). Для примера: (№3|Вася Пупкин|Мужчина|КрасаУчиГ|28|ЖиЕсть); или: (12|текст|текст|текст|56|текст), в общем, что-то вроде того. 2) Возможно ли выполнить проверку на "пустоту строки"? Т.е. строки №1,№2,№3 уже заполнены Васей, Федей и Толиком, а нужна запись в №4 - как следствие. Или, другими словами, "запись в близжайшую свободную строку", что в конкретной задаче необходимо для последовательности: #1 #2 #3 ... 3) Есть ли возможность привязать вдовесок какую-нибудь формулу, например "произведение чисел" или ячеек? P.S. Возможно я всё усложняю и "пункт 2)" можно реализовать как-то иначе. Например несколько BAT-ников(если на .BAT всё же пал выбор) вносят коррективы в один ОСНОВНОЙ (пополня список Вась, Петь и т.д.), а тот уже одним махом внесёт все данные в .xls Т.е. BAT1(№1), BAT2(№2), BAT(...) to>>> .BAT(основной) (№1|текст|число|текст|) (№2|текст|число|текст|) to>>> .xls Мне кажется, что так даже будет лучше. Но вот незадача! Снова проверка ближайших свободных "пустых строк" ![]() |
|
Отправлено: 19:22, 16-12-2019 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Под словом "производит" - я подразумеваю "должен". Это своего рода конкретизация поставленной задачи. В строку 12. Если ячейка столбца данной строки не пустая, то в 13. Если и та содержит информацию, то в 14. ЗАПИСЬ аналогичную специально представленными выше примерами(в .xls файле). |
|
Последний раз редактировалось Ka3hak, 18-12-2019 в 07:52. Отправлено: 07:34, 18-12-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать В нынешнем виде таблица непригодна для автоматизации, во всяком случае, эта автоматизация будет крайне трудоёмкая.
1) Для нормальной автоматизации нужно избавиться от объединённых ячеек, продублировав данные. Тогда можно получить такой вывод
№ п/п : 1 Наименование работы : Устройство армированных стяжек толщ 20мм Материал : раствор или бетон Ед. изм : м3 Норма на ед. изм. : 6,5 Нормативный документ : Устройство монолитных ж/б и бетонных конструкций "это" : 1,3 умножить на "это" : 5 № п/п : 1 Наименование работы : Устройство армированных стяжек толщ 20мм Материал : сетка сварная Ед. изм : м2 Норма на ед. изм. : 7,6464 Нормативный документ : Устройство монолитных ж/б и бетонных конструкций "это" : 1,08 умножить на "это" : 7,08 № п/п : 2 Наименование работы : Устройство стяжек армированных полипропиленовой фиброй Материал : цемент Ед. изм : кг Норма на ед. изм. : 15120 Нормативный документ : Устройство монолитных ж/б и бетонных конструкций "это" : 280 умножить на "это" : 54 № п/п : 2 Наименование работы : Устройство стяжек армированных полипропиленовой фиброй Материал : песок Ед. изм : м3 Норма на ед. изм. : 2,3 Нормативный документ : Устройство монолитных ж/б и бетонных конструкций "это" : 1,15 умножить на "это" : 2 № п/п : 2 Наименование работы : Устройство стяжек армированных полипропиленовой фиброй Материал : фибра Ед. изм : кг Норма на ед. изм. : 0,63 Нормативный документ : Устройство монолитных ж/б и бетонных конструкций "это" : 0,7 умножить на "это" : 0,9 Потом с этими данными уже можно работать, добавлять строки и т. д. 2) Ячейки с числами сделать реально числовыми. Сейчас, если импортировать из экселя данные, то умножить числа не получается, для этого надо объяснить компьютеру, что это действительно числа |
------- Отправлено: 11:35, 18-12-2019 | #12 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать DJ Mogarych, спасибо Вам большое за то, что откликнулись!
Цитата DJ Mogarych:
Но вот что касается остального - возникают вопросы. Цитата DJ Mogarych:
|
||
Последний раз редактировалось Ka3hak, 18-12-2019 в 12:54. Отправлено: 12:11, 18-12-2019 | #13 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать DJ Mogarych, дело в том, что на текущий момент, в .VBS я нулевой. Но спешу заверить, что быстро учусь
![]() Могу ли я предложить поставить задачу ещё проще и попросить кусочек полного кода, чтобы было от чего отталкиваться? Мне важны только 3 ключевых момента. 1) Внедрение формулы в одну из ячеек строки, а лучше - на весь столбец. Потому как на основе одного (рабочего) скрипта, поочерёдно будут вноситься разные данные. Но и хрен бы с этим "пунктом первым". Он просто блекнет на фоне пункта №2, ведь формулу произведения чисел можно изначально забить и ручками. 2) Очерёдности записи в ближайшую, верхнюю, свободную строку. С учётом дублирования, как вы подсказали - буду также колдовать. 3) Внесённые данные должны различаться по типу: текстовый - числовой, хотя и это, как я понимаю, тоже можно исполнить вручную. И вдовесок ещё вопросик, пожалуйста... Я никак не смогу управлять размером ячейки по средствам .VBS? |
Последний раз редактировалось Ka3hak, 18-12-2019 в 12:59. Отправлено: 12:49, 18-12-2019 | #14 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Нет, это Powershell. Также, необходимо установить модуль Import-Excel: https://www.powershellgallery.com/packages/ImportExcel
Полный код: # Конвертация xls в xlsx & 'C:\Program Files (x86)\Microsoft Office\Office16\excelcnv.exe' -oice D:\temp\normy_spisania_materialov.xls D:\temp\normy_spisania_materialov.xlsx $xlsx = import-excel D:\temp\normy_spisania_materialov.xlsx -StartRow 4 -DataOnly # Если ячейки в исходном файле не числовые $xlsx.where{$_.'Ед. изм'} |% { [double]$1 = $_.'"это"' -replace ',','.' [double]$2 = $_.'умножить на "это"' -replace ',','.' $1 * $2 } # Если числовые $xlsx.where{$_.'Ед. изм'} |% { $_.'"это"' * $_.'умножить на "это"' } 1) Формулы там вроде бы есть, см. справку по модулю. 2) Можно внести ещё один столбец просто с порядковыми номерами и отталкиваться от них, или сделать № п/п последовательными, если я правильно понял ваш вопрос. 3) Если данные будут вноситься скриптом, то при экспорте готового файла с данными будет всё в порядке. Вопрос в исходном файле. Управлять размером ячейки при экспорте можно. Я обычно пользуюсь параметром -AutoSize. |
------- Последний раз редактировалось DJ Mogarych, 18-12-2019 в 15:16. Отправлено: 14:50, 18-12-2019 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Избавляться надо от Excel, потому как в примере — типичная картина для базы данных с тремя таблицами: Нормативные документы, Наименование работы, Материалы и связями между ними один-ко-многим. Посему — MS Access, 1С или любую другую не плоскую СУБД.
|
Отправлено: 17:40, 18-12-2019 | #16 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата Ka3hak:
И, опять же, не проще ли это сделать макросом в таблице, а не внешним скриптом? |
||
------- Последний раз редактировалось megaloman, 18-12-2019 в 18:23. Отправлено: 18:12, 18-12-2019 | #17 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать megaloman, доброго времени суток!
Цитата megaloman:
с удобным, понятным интерфейсом и как следствие - минимумом манипуляций для пользователя. Цитата megaloman:
подразумевается некая связка визуального GUI-интерфейса и исполняемых файлов в виде скриптов. - В GUI оболочке есть выпадающий список с наименованием производимых работ на выбор. - Выбираем необходимый пункт (тип производимых работ) и он уже ссылается на заведомо определённые скриптом значения. - Далее - кнопка "apply" и уже тут отработывает скрипт, который заносит необходимую информацию в .xls файл. Если быть несколько точнее, то условно: when press "apply"\ if change "наименование работ №1"\ then run "script1"\ else if... и т.д. и т.п. Цитата megaloman:
|
|||
Последний раз редактировалось Ka3hak, 24-12-2019 в 09:51. Отправлено: 22:23, 18-12-2019 | #18 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Цитата Ka3hak:
Зачем вообще всё это? Почему не использовать просто Excel, а не дублировать его интерфейс непонятными костылями? |
|
------- Отправлено: 22:37, 18-12-2019 | #19 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Ka3hak, Не понимаю задачи.
Цитата DJ Mogarych:
Цитата Ka3hak:
То есть, работать надо в направлении организации процесса на базе полноценного ПО (Excel), либо Цитата Iska:
|
|||
------- Последний раз редактировалось megaloman, 18-12-2019 в 22:59. Отправлено: 22:52, 18-12-2019 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения | v79italya | Скриптовые языки администрирования Windows | 25 | 20-08-2019 19:20 | |
CMD/BAT - [решено] пример BAT-файла, который будет вносить коррективы в .cfg файл | Ka3hak | Скриптовые языки администрирования Windows | 25 | 14-06-2018 05:15 | |
2013 - Как открыть файл *.mdb, не используя *.ldb? | IksSafonsky | Microsoft Office (Word, Excel, Outlook и т.д.) | 0 | 15-02-2016 16:09 | |
[решено] Как заблокировать доступ к сайтам на mac не используя файл hosts? | Gosha1234 | Хочу все знать | 1 | 10-07-2012 00:10 | |
Разное - Как найти и восстановить файл .XLS из контрольной точки возврата? | webser | Microsoft Windows 2000/XP | 3 | 06-08-2007 14:52 |
|