Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2016 14:58:52

Puten
Зарегистрирован: 2016-01-06
Сообщения: 40
Репутация: +  2  -
Профиль   Отправить e-mail  

Запись и редактирование данных в excel - Python

ajib6ept
Прост хотел понять, можно же Excel Открыть и вписать, зачем еще программу писать?
И ведь не поспоришь Можно и самим экселем заменить, можно и вручную все записывать.

А можно более автоматизировать сей процесс. Сканер автоматом добавляет “Enter” в конце строки. Это значит, что в экселе нужно мышкой или клавой переходить на следующую клетку в ряду, иначе все будет в столбик писать. Т.е. нужно и орудовать сканером и клаво/мышей. Не так тяжело, конечно, но постоянно следить, что выбрана нужная клетка + самому переходить на следующую.

На питоне хватило бы одного сканера безо всяких нажатий на клаве. Открыл програмку, 5 раз на сканере на кнопку нажал - все само ввелось в нужные поля, закрылось и сохранилось.

Для меня это были бы практика и опыт в Питоне.
Ладно, не смею больше тратить ваше время.

Офлайн

#2 Янв. 7, 2016 15:13:18

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

Запись и редактирование данных в excel - Python

Puten
Или есть решения более удобные, чем простое сохранение в эксель? SQL может или на вебсервере чего замутить?
Там нужно хранить либо в csv, либо в sqlite. А в Excel можно переводить уже csv или sqlite.
Если нужно просто точно хранить и добавлять, то подойдёт csv.
Если нужно ещё делать выборки и/или менять вид данных, то нужен sqlite.
Есть ещё yaml, json, xml. Этими можно придавать ещё информационное сопровождение полям.

Для csv есть модуль csv.
Для sqlite есть модуль sqlite3.

Puten
Можно и самим экселем заменить, можно и вручную все записывать.
Да можно в сети сделать web-интерфейс к базе данных. Короче, Excel - это слишком неповоротливый и ограниченный способ обмена.



Отредактировано py.user.next (Янв. 7, 2016 15:16:38)

Офлайн

#3 Янв. 7, 2016 15:28:28

Puten
Зарегистрирован: 2016-01-06
Сообщения: 40
Репутация: +  2  -
Профиль   Отправить e-mail  

Запись и редактирование данных в excel - Python

py.user.next
Там нужно хранить либо в csv, либо в sqlite. А в Excel можно переводить уже csv или sqlite.
Если нужно просто точно хранить и добавлять, то подойдёт csv.
Если нужно ещё делать выборки и/или менять вид данных, то нужен sqlite.
Есть ещё yaml, json, xml. Этими можно придавать ещё информационное сопровождение полям.

Для csv есть модуль csv.
Для sqlite есть модуль sqlite3.
Спасибо. Нужно просто хранить, без редактирования, но с поиском (сам эксель пусть ищет, вполне хватит).
С модулем csv уже игрался, выдает данные или в одну клетку, через запятую, или в один столбик (а не в 3, как нужно). Но это лечится импортом в экселе, там можно разделители выбрать. Думал можно сразу в csv сохранять и эксель уже столбиками откроет без импорта, но не получилось. Блокнот тоже открывает все кучей, вроде id,name,courier,1,Vasja,TNT , вместо id name courier в каждой клетке и под ними данные.
Попробую sqlite еще поковырять. Новые знания, даже без удачноо результата, не помешают.

Офлайн

#4 Янв. 7, 2016 15:43:22

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Запись и редактирование данных в excel - Python

Puten
Ладно, не смею больше тратить ваше время.
Да что уж там.
1 Я двумя руками поддержу мнение что в эксел. эти данные не надо пихать. Если интересно могу пару страниц недостатков такого подхода привести.
2. Я двумя руками проголосую за не высказанное пока мнение что не нужно паковать вашу программу в один экзешник. Файл *.py будет гораздо более удобен.

Вам надо:
1 Запустить программу.
Далее вы орудуете сканером, в результате у вам получается поток событий как от клавиатуры, включая переводы строк на каждую введенную посылку.
Вы хотите это запрятать для долговременного хранения.
По окончании работы вы ручками закрываете программу.
2. Вы хотите иметь возможность делать выборку по любому из 3 полей.
3. Вам надо чтобы хранимые данные были в формате пригодном для чтения человеком без специального ПО (те ПО будет но это текстовый редактор или exel)

Эту задачу решает кусок кода:
import sys
with open("aaa.txt","a") as f:
    while 1:
        lin=sys.stdin.readline().strip()
        if not lin:
            break
        f.write(lin)
        f.write("\n")

Программа закрывается по передаче пустой строки или закрыванием программы.
Дописывание делается просто заданием нужного режима открывания файла. (возможно вам надо задать при открывании encoding=“cp1251”).

Попробуйте код и напишите что вас не устраивает.



Отредактировано doza_and (Янв. 7, 2016 15:44:19)

Офлайн

#5 Янв. 7, 2016 15:45:54

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Запись и редактирование данных в excel - Python

Короче, Excel - это слишком неповоротливый и ограниченный способ обмена.

Тут же удобство, “чтобы администрация на своих компах в любое время могла открыть файлик и найти нужную посылку/отправителя/получается и тд.” Без установки дополнительно ПО для чтение SQLite и пр. Лучше сперва консольно все настроить и потом только GUI добавить.

Не понимаю в чем трудность, дописать строку в Excel? Вот например так можно

from openpyxl import *
wb = load_workbook("sample.xlsx")
ws1 = wb.get_sheet_by_name("Sheet")
k = 1
while ws1.cell(row=k, column=1).value is not None:
    k +=1
ws1.cell(row=k, column=1).value = "11111111"
wb.save("sample.xlsx")



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#6 Янв. 7, 2016 15:48:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Запись и редактирование данных в excel - Python

Puten
С модулем csv уже игрался, выдает данные или в одну клетку, через запятую,
Так покажите что делали. Поправить раз плюнуть наверное.



Офлайн

#7 Янв. 7, 2016 16:18:57

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

Запись и редактирование данных в excel - Python

ajib6ept
Не понимаю в чем трудность, дописать строку в Excel?
А теперь возьми этот файл, положи в виртуальную машину на http://aws.amazon.com и выведи данные в веб-интерфейс там же, чтобы сотрудники могли через интернет просматривать их хоть в телефоне, хоть в чём.
В общем, с этим экселем ты не можешь ничего, можешь только сидеть один и руками лазить в этом файле полдня.



Отредактировано py.user.next (Янв. 7, 2016 16:20:53)

Офлайн

#8 Янв. 7, 2016 17:01:39

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Запись и редактирование данных в excel - Python

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

Я как раз и понял, что надо только “руками лазить в файле”, без доступа из интернет.

Конечно, если задача стоит, чтобы через интернет смотреть данные, то лучше писать в базу данных, и уже не gui, а web -форму делать.



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#9 Янв. 8, 2016 02:19:22

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

Запись и редактирование данных в excel - Python

ajib6ept
Я как раз и понял, что надо только “руками лазить в файле”, без доступа из интернет.
Разница есть, xls-файл требует наличия офисного пакета, то есть в консоли ты данные уже не прочитаешь и не передашь никуда.
Представь, 100 бухгалтерш сидят и им всем надо получить доступ к этому файлу и что-то там подправить. Excel не поддерживает работу с сетью. У каждой бухгалтерши будет свой собственный файл, которым она перезатрёт файлы других бухгалтерш, а те в это время закончат писать и перезатрут её файл своими.
И это всё из-за того, что ты предложил сделать управление данными через Excel.



Отредактировано py.user.next (Янв. 8, 2016 02:24:59)

Офлайн

#10 Янв. 8, 2016 08:49:30

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Запись и редактирование данных в excel - Python

py.user.next
Разница есть, xls-файл требует наличия офисного пакета, то есть в консоли ты данные уже не прочитаешь и не передашь никуда.
Представь, 100 бухгалтерш сидят и им всем надо получить доступ к этому файлу и что-то там подправить. Excel не поддерживает работу с сетью. У каждой бухгалтерши будет свой собственный файл, которым она перезатрёт файлы других бухгалтерш, а те в это время закончат писать и перезатрут её файл своими.
И это всё из-за того, что ты предложил сделать управление данными через Excel.

Опять же, как понял из первого поста, там редко (~один раз в неделю) Маша будет открывать Excel файл, делать фильтр, забирать необходимые данные, закрывать файл (писать в файл она ничего не будет). Офис у Маши на компьютере установлен.

Ну возможен конфликт, когда файл открыт Машей и мы дополнительно считываем данные со сканера, но здесь тоже можно придумать что-нибудь.

Я за базу данных, но в этом случае хочет человек в excel писать данные, пусть пишет.



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version