Форум сайта python.su
У меня стоит задача написать скрипт, который принимает AJAX запрос с данными пользователя и заносит их в CSV-файл, который потом будет скачиваться и открываться MS Excel.
Вот такой запрос:
$.ajax({ type: "POST", url: "iotest.py", data: { action: 'writePlayer', dataScore: dataScore, dataName: dataName, dataSurname: dataSurname, dataPhone: dataPhone, dataEmail: dataEmail }, success: function (response) { console.log("Готово " + response) } });
#!/usr/bin/python3.4 import cgi import csv print("Content-type: text/html\n\n") form = cgi.FieldStorage() dataFile = "db.csv" with open(dataFile, 'a', newline='', encoding='utf-8') as csvfile: fieldnames = ['dataName', 'dataSurname', 'dataScore', 'dataPhone', 'dataEmail'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames, dialect='excel') writer.writerow({'dataName': form['dataName'].value, 'dataSurname': form['dataSurname'].value, 'dataScore': form['dataScore'].value, 'dataPhone': form['dataPhone'].value, 'dataEmail': form['dataEmail'].value})
with open(dataFile, 'a', newline='', encoding='cp1251')
delimiter=';'
Отредактировано exister (Авг. 16, 2017 14:02:12)
Офлайн
existerТак что вы сюда пишете? Пишите в техподдежку Микрософта.
Эксель не понимает кодировку, вместо кириллицы отображает левые символы
Отредактировано doza_and (Авг. 15, 2017 23:22:52)
Офлайн
Ты можешь формировать xls-файл из csv-файла с помощью питона.
Офлайн
я в работе по возможности отказался от CSV по этой причине - пользователи на Винде в экселе имеют проблемы. В итоге делаю xlsx файл, благо это не сильно сложнее - есть библиотеки в достатке.
Офлайн
JOHN_16У меня многие базы в CSV лежат, но это не на сервере, а после скрапинга. Почему? А потому что я часто по ним grep делаю, когда что-то найти надо. Ни sqlite, ни файлы какие-то не дадут такой мощи (база не одна и не в одной директории).
я в работе по возможности отказался от CSV по этой причине
Отредактировано py.user.next (Авг. 16, 2017 01:11:22)
Офлайн
py.user.nextНу ясно же каждому, что sql придумали потому, что не умели грепать!!!
Ни sqlite, ни файлы какие-то не дадут такой мощи
Офлайн
JOHN_16Так тут это не проблема формата CSV и даже не проблема exel. Это пользователи не умеют инструменты использовать. Я им советую просто взять мозг в кулак и прочитать документацию как данные импортируются. Если мозга не хватает для того чтобы научиться пользоваться exel возьми инструмент устроенный логичнее, например Libreoffice.
отказался от CSV по этой причине - пользователи на Винде в экселе имеют
проблемы
FishHook
Ну ясно же каждому, что sql придумали потому, что не умели грепать!!!
Офлайн
doza_andКогда я брал данные для теста из словаря, то передавал их в CSV в кодировке cp1251, а не Unicode - тогда Эксель все отображал корректно. Но прикрутить cp1251 к моему AJAX запросу я уже не смог. Более того, мне кажется, что надо по хорошему с Юникодом и работать, а не конвертировать туда-сюда, нет?
Так что вы сюда пишете? Пишите в техподдежку Микрософта.
py.user.nextУ меня CGI скрипт, я уже подключал Google Sheets, но этим вариантом пользоваться нельзя, т.к. скрипт исполняется около 3 секунд, что просто нереально долго и неприемлемо в случае, если одновременно несколько пользователей заполняют форму. Честно говоря, Экселевские библиотеки я не подключал, но уверен, что они будут такие же медленные, как Гугловские.
Ты можешь формировать xls-файл из csv-файла с помощью питона.
Офлайн
existerВам надо разобраться с вопросами кодировок. Скорее всего не unicode а utf-8 ну или может utf-16 это ну вообще никак не unicode.
их в CSV в кодировке cp1251, а не Unicode
exister
Когда я брал данные для теста из словаря, то передавал их в CSV в кодировке cp1251, а не Unicode - тогда Эксель все отображал корректно.
Отредактировано doza_and (Авг. 16, 2017 08:59:01)
Офлайн
doza_andя знаю. Но дешевле сделать xlsx чем менеджерам объяснять и слушать их недовольство. Серьезно =) тут не техническая проблема…
Так тут это не проблема формата CSV и даже не проблема exel.
Офлайн