Форум сайта python.su
0
Как добавить данные по деталям в уже существующие Excel документы?
Каждый документ это тип машин, а листы - их гос.номера. Уже создал окно, 2 комбобокса, и 3 инпута. Как сделать так, чтобы: а) можно было выбрать документ, и нужный лист в нем; б) вносить данные по клику в последнюю строчку. Помогите пожалуйста, начинающий программист. Вот код:
import tkinter as Tk import xlsxwriter import openpyxl, xlrd, xlwt from tkinter import * from tkinter import messagebox as mb from tkinter import ttk #Excel root = Tk() root.title("Добавление детали") root.geometry("250x350") #текстовые поля label1 = Label(root, text = "тип тс", bg = "green", fg = "white") label2 = Label(root, text = "гос.номер", bg = "green", fg = "white") label3 = Label(root, text = "наименование детали", bg = "red", fg = "white") label4 = Label(root, text = "цена", bg = "red", fg = "white") label5 = Label(root, text = "количество", bg = "red", fg = "white") label1.pack( anchor=NW) combo1 = ttk.Combobox( values=[ ]) combo1.pack(anchor=NW) label2.pack( anchor=NW) combo2 = ttk.Combobox( values=[ ]) combo2.pack(anchor=NW) label3.pack(anchor=SW) input3 = Entry(root, width = 20, bd = 3) input3.pack( anchor=SW) label4.pack( anchor=SW) input4 = Entry(root, width = 20, bd = 3) input4.pack( anchor=SW) label5.pack( anchor=SW) input5 = Entry(root, width = 20, bd = 3) input5.pack( anchor=SW) btn = Button(text="Внести") btn.pack(anchor=SW) root.mainloop()
Отредактировано Meiram (Май 15, 2020 19:52:59)
Офлайн
27
Заключи свой код в теги, чтобы не гадать что в комбобоксах. Для правильного оформления: рядом со смайликом над окошком, где пишешь сообщение, есть значок в виде листка. Наведи на него курсор и выбери python. Выдаст теги в твоё сообщение. В эти теги вставь свой код.
Как работать с листами, активировать нужный и вставка данных: почитай доки на библиотеки openpyxl, xlrd, xlwt. Если не ошибаюсь, то пара xlrd, xlwt предназначена для работы с xls файлами старого формата excel97. Если знаком с VBA для Excel, то особой сложности разобраться с библиотеками не будет. Мне кажется, что в самом Excel смастерить макрос с пользовательским диалогом будет проще, чем делать через питон.
К кнопке “Внести” сделай привязку функции, которая будет вносить данные. Например, btn = Button(text=“Внести”, command=vnesti). Обрати внимание, в параметр command пишется имя функции без скобок.
Отредактировано Rafik (Май 15, 2020 16:59:35)
Офлайн
44
.
и вставьте ссылку на его url Офлайн
857
RafikЭто если ты его формируешь на компьютере, где он будет человеком открываться. Если же ты его переделываешь на сервере скриптами, то надо именно скриптами в него залазить со стороны. И там, естественно, нет Excel. К тому же ещё может понадобиться обрабатывать тысячи файлов в день таким образом. Тут тоже руками не пооткрываешь их, нужен скрипт.
Если знаком с VBA для Excel, то особой сложности разобраться с библиотеками не будет. Мне кажется, что в самом Excel смастерить макрос с пользовательским диалогом будет проще, чем делать через питон.
Офлайн
27
Насчёт сервака и ещё, в догонку, линя как-то не подумал. Там точно нет excel. А либре офис не полностью поддерживает макросы на VBA. Насчёт открывать ручками много файлов могу поспорить. Никто не мешает сделать макрос в отдельной книге, которая будет рулить всем процессом точно также, как это делал бы скрипт на питоне. Здесь есть один минус: будет работать только на тех машинах, где есть excel.
Офлайн
857
RafikИ как ты обработаешь папку с 1000 xls-файлов? Вот она пришла к тебе, вот ты её обработал, вот ты её отправил дальше. Всё это в течение дня нужно сделать, а на следующий день то же самое повторяется.
Никто не мешает сделать макрос в отдельной книге, которая будет рулить всем процессом точно также, как это делал бы скрипт на питоне.
Офлайн
124
вот информация на эту тему Your text to link here…
Офлайн
124
попробовал создал файл Exсel, и в поле количество вводил цифру,она сохранялась в этом же файле
import win32com.client import tkinter as Tk from tkinter import * from tkinter import messagebox as mb from tkinter import ttk #Excel root = Tk() root.title("Добавление детали") root.geometry("250x350") #текстовые поля label1 = Label(root, text = "тип тс", bg = "green", fg = "white") label2 = Label(root, text = "гос.номер", bg = "green", fg = "white") label3 = Label(root, text = "наименование детали", bg = "red", fg = "white") label4 = Label(root, text = "цена", bg = "red", fg = "white") label5 = Label(root, text = "количество", bg = "red", fg = "white") label1.pack( anchor=NW) combo1 = ttk.Combobox( values=[ ]) combo1.pack(anchor=NW) label2.pack( anchor=NW) combo2 = ttk.Combobox( values=[ ]) combo2.pack(anchor=NW) label3.pack(anchor=SW) input3 = Entry(root, width = 20, bd = 3) input3.pack( anchor=SW) label4.pack( anchor=SW) input4 = Entry(root, width = 20, bd = 3) input4.pack( anchor=SW) label5.pack( anchor=SW) input5 = Entry(root, width = 20, bd = 3) input5.pack( anchor=SW) Excel = win32com.client.Dispatch("Excel.Application") wb = Excel.Workbooks.Open(u'C:\\Users\\Мих Мих\\Documents\\OpenOffice\\test.ods') sheet = wb.ActiveSheet val = sheet.Cells(1,1).value def ins(): sheet.Cells(1, 1).value = input5.get() wb.Save() def click(): ins() btn = Button(text="Внести",command = click) btn.pack(anchor=SW) root.mainloop()
Офлайн
27
py.user.nextДелается это точно также, как ты собираешься делать через питон. VBA excel умеет читать содержимое папки, открывать свои файлы, писать, а также отображать информацию о файле и из файла в userform, в нём же (в userform) можно делать всякие label, entry, combobox и прочие “виджеты”.
И как ты обработаешь папку с 1000 xls-файлов?
Отредактировано Rafik (Май 18, 2020 17:48:05)
Офлайн
857
RafikНа питоне я ничего не открываю. Я просто включаю компьютер и больше ничего не делаю. И когда на компьютер приходят файлы, сам собой запускается скрипт на питоне и преобразует их. Дальше эти готовые файлы уходят по сети куда-то, а я за это время ни разу к компьютеру не подошёл. То есть ты секретарше можешь сказать просто “включи компьютер с утра и выключи компьютер вечером” - и всё будет делаться само. При этом её не надо учить и ещё человеческий фактор добавлять, когда она может ошибиться и нажать не на ту кнопку не в то время. И при этом я могу этот скрипт на питоне прикрутить к другим скриптам на питоне ещё.
Открываешь книгу, содержащую макрос, запускаешь его кнопкой на листе или ставишь в автозапуск при открытии файла.
Отредактировано py.user.next (Май 18, 2020 23:26:35)
Офлайн