Найти - Пользователи
Полная версия: Запись и редактирование данных в excel - Python
Начало » Python для новичков » Запись и редактирование данных в excel - Python
1 2 3 4 5 6
Puten
ajib6ept
Прост хотел понять, можно же Excel Открыть и вписать, зачем еще программу писать?
И ведь не поспоришь Можно и самим экселем заменить, можно и вручную все записывать.

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

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

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

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

Puten
Можно и самим экселем заменить, можно и вручную все записывать.
Да можно в сети сделать web-интерфейс к базе данных. Короче, Excel - это слишком неповоротливый и ограниченный способ обмена.
Puten
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 еще поковырять. Новые знания, даже без удачноо результата, не помешают.
doza_and
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”).

Попробуйте код и напишите что вас не устраивает.
ajib6ept
Короче, 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")
doza_and
Puten
С модулем csv уже игрался, выдает данные или в одну клетку, через запятую,
Так покажите что делали. Поправить раз плюнуть наверное.
py.user.next
ajib6ept
Не понимаю в чем трудность, дописать строку в Excel?
А теперь возьми этот файл, положи в виртуальную машину на http://aws.amazon.com и выведи данные в веб-интерфейс там же, чтобы сотрудники могли через интернет просматривать их хоть в телефоне, хоть в чём.
В общем, с этим экселем ты не можешь ничего, можешь только сидеть один и руками лазить в этом файле полдня.
ajib6ept
В общем, с этим экселем ты не можешь ничего, можешь только сидеть один и руками лазить в этом файле полдня.

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

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

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

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

Я за базу данных, но в этом случае хочет человек в excel писать данные, пусть пишет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB