Узнайте, как делиться данными с PHPExcel с нашим видео-учебником.
Когда вы работаете над веб-приложениями для крупных организаций и предприятий, я уверен, что вы столкнулись с этой уникальной проблемой. Организации часто хранят данные в электронных таблицах, и вам необходимо предоставить им интерфейс для ввода этих данных в ваше веб-приложение. Основная идея состоит в том, чтобы загрузить файл, прочитать его содержимое и сохранить его в файлах или базах данных, которые использует ваше веб-приложение. Вам также может понадобиться экспортировать данные из ваших веб-приложений. Например, как бы вы экспортировали оценки всех учеников в классе? Опять же, электронные таблицы являются предпочтительным средством.
В этом посте мы обсудим различные способы обработки этих файлов и проанализируем их, чтобы получить необходимую информацию с помощью Python (2.7) .
Быстрый учебник для электронных таблиц
Прежде чем разбирать электронные таблицы, вы должны понять, как они структурированы. Файл электронной таблицы представляет собой набор листов, и каждый лист представляет собой набор ячеек данных, размещенных в сетке, аналогично таблице. На листе ячейка данных идентифицируется двумя значениями — номерами строк и столбцов.
Например, на данном скриншоте электронная таблица содержит только один лист, «Query1». Ячейка «2А» соответствует 2-й строке и 1-му столбцу. Значение ячейки 2А — «12510001».
Хотя программы с графическим интерфейсом присваивают буквы именам столбцов, при анализе данных мы будем начинать номера строк и столбцов с 0. Это означает, что ячейка 2A будет соответствовать (1, 0), 4B — (1,3) От 3С до (2, 2) и т. Д.
Краткий обзор файлов CSV
CSV означает «значения, разделенные запятыми» (или иногда разделенные символом, если в качестве разделителя используется какой-либо символ, отличный от запятой), а название довольно очевидно. Типичный файл CSV выглядит следующим образом:
"ID", "Name", "Age"
"1", "John", "11"
"2", "Mary", "12"
"3", "Sherlock", "13"
Вы можете конвертировать электронные таблицы в файлы CSV для облегчения анализа. Файлы CSV можно легко анализировать с помощью модуля csv
Получение необходимых модулей Python
Для чтения и записи файлов XLS вам необходимо установить два модуля — xlrd
xlwt
Вы можете сделать это с помощью одного из установщиков Python: pip
easy_install
pip install xlrd
pip install xlwt
Вы можете использовать xlutils
xlrd
xlwt
Чтобы читать и записывать CSV-файлы, вам нужен модуль csv
Чтение электронных таблиц
Если у вас есть файл, и вы хотите проанализировать данные в нем, вам необходимо выполнить следующее в следующем порядке:
- Импортируйте модуль
xlrd
- Откройте файл электронной таблицы (или рабочую книгу)
- Выберите лист
- Извлечь значения конкретных ячеек данных
Откройте файл электронной таблицы
Давайте сначала откроем файл в Python.
import xlrd
workbook = xlrd.open_workbook('my_file_name.xls')
Если ваш файл содержит символы не ASCII, вы должны открыть его в формате Юникод следующим образом:
workbook = xlrd.open_workbook('my_file_name.xls', encoding='cp1252')
Если ваша таблица очень большая, вы можете добавить аргумент on_demand
open_workbook
workbook = xlrd.open_workbook('my_file_name.xls', on_demand = True)
Открытие листа
Если вы знаете имя листа, вы можете открыть его, выполнив следующее:
worksheet = workbook.sheet_by_name('My_Sheet_Name')
Если вы не уверены в названии листа, вы можете открыть первый лист по его индексу:
worksheet = workbook.sheet_by_index(0)
workbook.nsheets
workbook.sheet_names()
Получение данных из ячеек
Выбрав рабочий лист, вы можете извлечь значение определенной ячейки данных следующим образом.
# Value of 1st row and 1st column
sheet.cell(0, 0).value
Вы можете повторить его по циклу, чтобы извлечь данные из всего листа.
Вы можете обнаружить пустую ячейку, используя empty_cell
xlrd
if sheet.cell(0, 0).value == xlrd.empty_cell.value:
# Do something
Создание электронных таблиц
Рабочий процесс создания рабочих листов аналогичен предыдущему разделу.
- Импортировать модуль
xlwt
- Создать пустой файл электронной таблицы (или рабочую книгу)
- Создать лист в файле
- Поместите нужные значения в определенные ячейки данных
- Сохранить книгу
Создать новый файл
Вы можете создать новый файл электронной таблицы, используя xlwt
Простой кусок кода создает пустой файл:
import xlwt
workbook = xlwt.Workbook()
workbook.save('my_file.xls')
Вы можете открыть его в юникоде, как в случае с xlrd
Добавление листов
Вы можете добавить листы в свою книгу, используя add_sheet
sheet = workbook.add_sheet('Sheet_1')
Работа с ячейками в листе
Создав лист, вы можете добавить значения к определенным ячейкам на листе следующим образом.
sheet.write(0, 0,'Inserting data in 1st Row and 1st Column')
Если вы хотите записать данные в строки, вы можете исправить строку и добавить данные.
row = sheet.row(1) # Selecting the second row
row.write(0,'2nd Row and 1st Column')
row.write(1,'1st Row and 2nd Column')
Если вы хотите удалить данные подряд, это можно сделать одной командой.
row.flush_row_data()
Вы также можете установить ширину столбца.
sheet.col(0).width = 625 # In pixels
Добавление стилей в ячейки
С xlwt
Следующий фрагмент показывает, как это сделать:
style = xlwt.XFStyle()
font = xlwt.Font('Arial')
style.font = font
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = xlwt.Style.colour_map['red']
style.pattern = pattern
sheet.write(0, 0, "Some data", style)
Вы также можете добавить пользовательские цвета в палитру xlwt .
Вывод
Как я упоминал ранее, создание и анализ электронных таблиц неизбежны, когда вы работаете с огромными веб-приложениями. Таким образом, знакомство с библиотеками разбора может помочь вам только тогда, когда возникнет такая необходимость.
Какой язык сценариев вы используете для работы с электронными таблицами? Есть ли в Python какая-либо другая библиотека для этой цели? Дайте нам знать в обсуждении ниже.
Узнайте, как делиться данными с PHPExcel с нашим видео-учебником.