Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2020 12:34:57

Meiram
Зарегистрирован: 2020-05-15
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Excel, ввод данных

Как добавить данные по деталям в уже существующие 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)

Офлайн

#2 Май 15, 2020 16:54:15

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Excel, ввод данных

Заключи свой код в теги, чтобы не гадать что в комбобоксах. Для правильного оформления: рядом со смайликом над окошком, где пишешь сообщение, есть значок в виде листка. Наведи на него курсор и выбери python. Выдаст теги в твоё сообщение. В эти теги вставь свой код.
Как работать с листами, активировать нужный и вставка данных: почитай доки на библиотеки openpyxl, xlrd, xlwt. Если не ошибаюсь, то пара xlrd, xlwt предназначена для работы с xls файлами старого формата excel97. Если знаком с VBA для Excel, то особой сложности разобраться с библиотеками не будет. Мне кажется, что в самом Excel смастерить макрос с пользовательским диалогом будет проще, чем делать через питон.
К кнопке “Внести” сделай привязку функции, которая будет вносить данные. Например, btn = Button(text=“Внести”, command=vnesti). Обрати внимание, в параметр command пишется имя функции без скобок.

Отредактировано Rafik (Май 15, 2020 16:59:35)

Офлайн

#3 Май 15, 2020 19:48:04

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Excel, ввод данных

.



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#4 Май 16, 2020 02:27:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Excel, ввод данных

Rafik
Если знаком с VBA для Excel, то особой сложности разобраться с библиотеками не будет. Мне кажется, что в самом Excel смастерить макрос с пользовательским диалогом будет проще, чем делать через питон.
Это если ты его формируешь на компьютере, где он будет человеком открываться. Если же ты его переделываешь на сервере скриптами, то надо именно скриптами в него залазить со стороны. И там, естественно, нет Excel. К тому же ещё может понадобиться обрабатывать тысячи файлов в день таким образом. Тут тоже руками не пооткрываешь их, нужен скрипт.



Офлайн

#5 Май 16, 2020 20:07:49

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Excel, ввод данных

Насчёт сервака и ещё, в догонку, линя как-то не подумал. Там точно нет excel. А либре офис не полностью поддерживает макросы на VBA. Насчёт открывать ручками много файлов могу поспорить. Никто не мешает сделать макрос в отдельной книге, которая будет рулить всем процессом точно также, как это делал бы скрипт на питоне. Здесь есть один минус: будет работать только на тех машинах, где есть excel.

Офлайн

#6 Май 17, 2020 00:23:39

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Excel, ввод данных

Rafik
Никто не мешает сделать макрос в отдельной книге, которая будет рулить всем процессом точно также, как это делал бы скрипт на питоне.
И как ты обработаешь папку с 1000 xls-файлов? Вот она пришла к тебе, вот ты её обработал, вот ты её отправил дальше. Всё это в течение дня нужно сделать, а на следующий день то же самое повторяется.



Офлайн

#7 Май 17, 2020 13:33:03

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1395
Репутация: +  124  -
Профиль   Отправить e-mail  

Excel, ввод данных

вот информация на эту тему Your text to link here…

Офлайн

#8 Май 17, 2020 16:19:00

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1395
Репутация: +  124  -
Профиль   Отправить e-mail  

Excel, ввод данных

попробовал создал файл 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()

Офлайн

#9 Май 18, 2020 17:46:31

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Excel, ввод данных

py.user.next
И как ты обработаешь папку с 1000 xls-файлов?
Делается это точно также, как ты собираешься делать через питон. VBA excel умеет читать содержимое папки, открывать свои файлы, писать, а также отображать информацию о файле и из файла в userform, в нём же (в userform) можно делать всякие label, entry, combobox и прочие “виджеты”.
Открываешь книгу, содержащую макрос, запускаешь его кнопкой на листе или ставишь в автозапуск при открытии файла.. Это эквивалетно запуску твоего макроса на питон.

Отредактировано Rafik (Май 18, 2020 17:48:05)

Офлайн

#10 Май 18, 2020 23:21:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Excel, ввод данных

Rafik
Открываешь книгу, содержащую макрос, запускаешь его кнопкой на листе или ставишь в автозапуск при открытии файла.
На питоне я ничего не открываю. Я просто включаю компьютер и больше ничего не делаю. И когда на компьютер приходят файлы, сам собой запускается скрипт на питоне и преобразует их. Дальше эти готовые файлы уходят по сети куда-то, а я за это время ни разу к компьютеру не подошёл. То есть ты секретарше можешь сказать просто “включи компьютер с утра и выключи компьютер вечером” - и всё будет делаться само. При этом её не надо учить и ещё человеческий фактор добавлять, когда она может ошибиться и нажать не на ту кнопку не в то время. И при этом я могу этот скрипт на питоне прикрутить к другим скриптам на питоне ещё.
Попробуй просто из макроса Excel выполнить какой-нибудь скрипт на питоне.



Отредактировано py.user.next (Май 18, 2020 23:26:35)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version