Импорт и экспорт данных Excel для обработки данных Python

Python

Эта статья была впервые опубликована в общедоступной учетной записи «AntDream». Добро пожаловать в поиск «AntDream» на WeChat или отсканируйте QR-код в нижней части статьи, чтобы следить за ней, и развивайтесь вместе со мной каждый день.

Основным применением Python является анализ данных, и при анализе данных мы часто сталкиваемся с ситуациями, когда необходимо обработать данные Excel. Вот краткое изложение того, как Python обрабатывает данные Excel, которые в основном используются в большинстве случаев. Я верю, что в будущем будет несложно обрабатывать данные Excel с помощью Python!

Python должен использовать 2 библиотеки для обработки данных Excel:xlwtиxlrd.xlwtБиблиотека отвечает за импорт данных в файлы электронных таблиц Excel, аxlrdБиблиотека отвечает за выборку данных в таблице Excel.

xlwtБиблиотека для импорта данных в Excel

Запись данных в файл Excel

wb = xlwt.Workbook()
# 添加一个表
ws = wb.add_sheet('test')


# 3个参数分别为行号,列号,和内容
# 需要注意的是行号和列号都是从0开始的
ws.write(0, 0, '第1列')
ws.write(0, 1, '第2列')
ws.write(0, 2, '第3列')

# 保存excel文件
wb.save('./test.xls')

можно увидеть, сxlwtРабота с библиотекой очень проста, в основном это три шага:

  1. открыть одинWorkbookобъект и использоватьadd_sheetспособ добавить таблицу
  2. Тогда просто используйтеwriteспособ записи данных
  3. последнее использованиеsaveметод сохранения

должны знать о том,xlwtСтроки и столбцы, определенные в библиотеке, взяты из0начать считать

Настройка стилей таблиц Excel

Стиль таблицы обычно имеет следующие элементы содержимого: шрифт, выравнивание, границы, цвет фона, ширину и специальное содержимое, такое как гиперссылки, дата и время и т. д. Давайте посмотрим на использованиеxlwtКак библиотека настраивает эти стили.

шрифт

xlwtБиблиотека поддерживает множество атрибутов шрифта, а именно:

字体属性

Чтобы установить шрифт, который вам нужно использоватьxlwtбиблиотекаXFStyleкласс иFontclass шаблон кода выглядит следующим образом:

style = xlwt.XFStyle()

# 设置字体
font = xlwt.Font()
# 比如设置字体加粗和下划线
font.bold = True
font.underline = True
style.font = font

# 然后应用
ws.write(2, 1, 'test', style)

Настройки последующих свойств аналогичны, и все они состоят из 4 шагов:

  1. получитьXFStyle
  2. Получите соответствующие обязательные атрибуты, например здесьFontобъект
  3. Установить конкретные значения свойств
  4. Наконец вwriteМетод применяется при записи данных
выравнивание ячеек

Сначала посмотрите, как установить выравнивание ячеек

# 单元格对齐
alignment = xlwt.Alignment()

# 水平对齐方式和垂直对齐方式
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
# 自动换行
alignment.wrap = 1
style.alignment = alignment

# 然后应用
ws.write(2, 1, 'test', style)

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

Настройки ширины ячейки:

# 设置单元格宽度,也就是某一列的宽度
ws.col(0).width = 6666
цвет фона ячейки

Атрибут, соответствующий цвету фона,Pattern

# 背景色
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN

# 背景色为黄色
# 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta,
# 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow ,
# almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray
# ...
pattern.pattern_fore_colour = 5
style.pattern = pattern

# 然后应用
ws.write(2, 1, 'test', style)
граница ячейки

Пограничная собственностьBorders

Существует 2 типа границ ячеек: цвет и стиль линии границы.

Вы можете установить цвет и стиль верхней, нижней, левой и правой границ соответственно.

# 边框
borders = xlwt.Borders()

# 边框可以分别设置top、bottom、left、right
# 每个边框又可以分别设置颜色和线样式:实线、虚线、无
# 颜色设置,其他类似
borders.left_colour = 0x40
# 设置虚线,其他类似
borders.bottom = xlwt.Borders.DASHED
style.borders = borders

# 然后应用
ws.write(2, 1, 'test', style)
Специальное содержимое, такое как гиперссылки и формулы

Специальный контент обычно встречается с этими категориями: гиперссылки, формулы, даты и время.

Чтобы иметь дело с этим специальным содержимым, вам нужно использоватьFormula

# 超链接
link = 'HYPERLINK("http://www.baidu.com";"Baidu")'
formula = xlwt.Formula(link)
ws.write(2, 0, formula)

# 公式也是类似
ws.write(1, 1, xlwt.Formula('SUM(A1,B1)'))

# 时间
style.num_format_str = 'M/D/YY'
ws.write(2, 1, datetime.datetime.now(), style)

Выше приведено все содержание записи данных в Excel с помощью Python.Давайте посмотрим, как читать данные в Excel для обработки.


xlrdБиблиотека для чтения данных в Excel

Чтение файла Excel

такое же использованиеxlrdБиблиотеке также легко читать данные Excel.Давайте сначала посмотрим на код реализации

# 先打开一个文件
wb = xlrd.open_workbook(file_path)
# 获取第一个表
sheet1 = wb.sheet_by_index(0)

# 总行数
nrows = sheet1.nrows
# 总列数
ncols = sheet1.ncols

# 后面就通过循环即可遍历数据了
# 取数据
for i in range(nrows):
    for j in range(ncols):
        # cell_value方法取出第i行j列的数据
        value = sheet1.cell_value(i, j)
        print(value)

Подводя итог, он делится на следующие этапы:

  1. сначала черезxlrdбиблиотекаopen_workbookКак открыть файл Excel
  2. затем пройтиsheet_by_indexметод получения таблицы
  3. Затем получить количество строк и столбцов таблицы соответственно, что удобно для последующего обхода цикла
  4. В соответствии с количеством столбцов и строк перебираем цикл черезcell_valueметод получения данных в каждой ячейке

Операции, связанные с рабочим листом

Есть много способов получить рабочий лист

# 通过索引
sheet1 = wb.sheets()[0]
sheet1 = wb.sheet_by_index(0)

# 通过名字
sheet1 = wb.sheet_by_name('test')

# 获取所有表名
# sheet_names = wb.sheet_names()

Получить все данные в строке или столбце

# 获取行中所有数据,返回结果是一个列表
tabs = sheet1.row_values(rowx=0, start_colx=0, end_colx=None)
# 返回一行一共有多少数据
len_value = sheet1.row_len(rowx=0)

row_valuesТри параметра: номер строки, начальный столбец и конечный столбец, где конечный столбецNoneУказывает на получение всех данных из начального столбца в конец.

Аналогично получению данных определенного столбца

cols = sheet1.col_values(colx=0, start_rowx=0, end_rowx=None)

Данные о времени обработки

Данные о времени являются особыми и не отправляются напрямую через указанный вышеcell_valueспособ получения. Сначала его нужно преобразовать в временную метку, а затем отформатировать в нужный нам формат.

Например, чтобы получить таблицу Excel, используется формат2019/8/13 20:46:35данные времени

# 获取时间
time_value = sheet1.cell_value(3, 0)

# 获取时间戳
time_stamp = int(xlrd.xldate.xldate_as_datetime(time_value, 0).timestamp())
print(time_stamp)

# 格式化日期
time_rel = time.strftime("%Y/%m/%d", time.localtime(time_stamp))
print(time_rel)

В основном есть три шага:

  1. пройти черезcell_valueспособ получить значение времени
  2. затем пройтиxldate_as_datetimeспособ получить метку времени
  3. затем отформатируйте его

Суммировать

Файлы Excel — это тип сценария, который часто встречается при обработке данных с помощью Python.xlwtиxlrdС помощью Excel данные можно импортировать и экспортировать очень быстро. Вы можете добавить эту статью в закладки и ссылаться на нее при работе с файлами Excel в будущем.


                         欢迎关注我的公众号查看更多精彩文章!

AntDream