Enciclopedia de métodos comunes para leer y escribir archivos EXCEL en Python

Hay muchas formas de leer y escribir Excel en Python, y diferentes módulos tienen formas ligeramente diferentes de leer y escribir. Aquí presento principalmente algunos métodos de uso común.

  • Utilice xlrd y xlwt para leer y escribir en Excel;
  • Utilice openpyxl para leer y escribir en Excel;
  • Usa pandas para leer y escribir en Excel;
    referencia:

Mucha gente aprende Python y no sabe por dónde empezar.
Mucha gente aprende Python y después de dominar la gramática básica, no saben dónde encontrar casos para comenzar.
Muchas personas que han realizado estudios de casos no saben cómo adquirir conocimientos más avanzados.
Para estos tres tipos de personas, les proporcionaré una buena plataforma de aprendizaje, ¡gratis para recibir tutoriales en video, libros electrónicos y código fuente del curso! ?? ¤
Grupo QQ: 232030553

https://www.python-excel.org/
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html#pandas.read_excel
https: //www.jianshu.com/p/19219542bf23

2 | 0 preparación de datos

Para facilitar la demostración, creé un nuevo archivo data.xls y data.xlsx aquí, el contenido del área de la primera hoja de trabajo sheet1 "A1: E5" es el siguiente, usado para probar el código para leer y escribir Excel:

 

3 | 0 xlrd y xlwt

xlrd es una biblioteca para leer datos y formatear información de archivos de Excel en formato .xls xlwt es una biblioteca para
escribir datos y formatear información en archivos de Excel más antiguos (por ejemplo: .xls).

3 | 1 ejemplo

pip install xlrd
pip install xlwt

 


Empezamos a leer el contenido del archivo.

import xlrd
import os

file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
book = xlrd.open_workbook(base_path)
sheet1 = book.sheets()[0]
nrows = sheet1.nrows
print('表格总行数', nrows)
ncols = sheet1.ncols
print('表格总列数', ncols)
row3_values = sheet1.row_values(2)
print('第3行值', row3_values)
col3_values = sheet1.col_values(2)
print('第3列值', col3_values)
cell_3_3 = sheet1.cell(2, 2).value
print('第3行第3列的单元格的值:', cell_3_3)

 


A continuación, escribamos. Hay demasiadas operaciones que se pueden realizar. Aquí solo enumero las operaciones de uso común.

import xlwt
import datetime
# 创建一个workbook 设置编码
workbook = xlwt.Workbook(encoding='utf-8')
# 创建一个worksheet
worksheet = workbook.add_sheet('Worksheet')
# 写入excel参数对应 行, 列, 值
worksheet.write(0, 0, label='测试')
# 设置单元格宽度
worksheet.col(0).width = 3333

# 设置单元格高度
tall_style = xlwt.easyxf('font:height 520;')
worksheet.row(0).set_style(tall_style)

# 设置对齐方式
alignment = xlwt.Alignment()  # Create Alignment
# May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.horz = xlwt.Alignment.HORZ_CENTER
# May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER
style = xlwt.XFStyle()  # Create Style
style.alignment = alignment  # Add Alignment to Style
worksheet.write(2, 0, '居中', style)

# 写入带颜色背景的数据
pattern = xlwt.Pattern()  # Create the Pattern
# May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5  # May be: 8 through 63. 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, the list goes on...
style = xlwt.XFStyle()  # Create the Pattern
style.pattern = pattern  # Add Pattern to Style
worksheet.write(0, 1, '颜色', style)

# 写入日期
style = xlwt.XFStyle()
# Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
style.num_format_str = 'M/D/YY'
worksheet.write(0, 2, datetime.datetime.now(), style)

# 写入公式
worksheet.write(0, 3, 5)  # Outputs 5
worksheet.write(0, 4, 2)  # Outputs 2
# Should output "10" (A1[5] * A2[2])
worksheet.write(1, 3, xlwt.Formula('D1*E1'))
# Should output "7" (A1[5] + A2[2])
worksheet.write(1, 4, xlwt.Formula('SUM(D1,E1)'))

# 写入超链接
worksheet.write(1, 0, xlwt.Formula('HYPERLINK("http://www.baidu.com";"百度一下")'))
# 保存
workbook.save('Excel_test.xls')

Cabe señalar que es mejor ejecutar a través de la línea de comando en la ruta actual, de lo contrario no se puede generar el archivo.

 

 

4 | 0 openpyxl

openpyxl es una biblioteca de Python para leer / escribir archivos Excel 2010 xlsx / xlsm / xltx / xltm.
Paquete de instalación

pip install openpyx

Después de la instalación, puede comenzar a leer datos

import openpyxl
import os
file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
workbook = openpyxl.load_workbook(base_path)
worksheet = workbook.get_sheet_by_name('Sheet1')
row3=[item.value for item in list(worksheet.rows)[2]]
print('第3行值',row3)
col3=[item.value for item in list(worksheet.columns)[2]]
print('第3行值',col3)
cell_2_3=worksheet.cell(row=2,column=3).value
print('第2行第3列值',cell_2_3)
max_row=worksheet.max_row
print('最大行',max_row)

 


Ahora comencemos a escribir datos

import zipfile  
# 创建文件句柄  
file = zipfile.ZipFile("测试.zip", 'r')  
# 提取压缩文件中的内容,注意密码必须是bytes格式,path表示提取到哪  
file.extractall(path='.', pwd='123'.encode('utf-8')) 

 

 

5 | 0 pandas

pandas admite extensiones de archivo xls, xlsx, xlsm, xlsb, odf, ods y odt para leer desde el sistema de archivos local o la URL. Admite la opción de leer una sola hoja de trabajo o una lista de hojas de trabajo.
El primero sigue siendo el paquete de instalación.

pip install pandas

语法 :
pd.read_excel (io, sheet_name = 0, header = 0, names = None, index_col = None, usecols = None, squeeze = False, dtype = None, engine = None, converters = None, true_values ​​= None, false_values ​​= Ninguno, skiprows = None, nrows = None, na_values ​​= None, parse_dates = False, date_parser = None, miles = None, comment = None, skipfooter = 0, convert_float = True, ** kwds)

  • io, la ruta de almacenamiento de Excel
  • sheet_name, el nombre de la hoja de trabajo que se leerá
  • encabezado, qué fila usar como nombre de columna
  • nombres, personalizar el nombre de la columna final
  • index_col, la columna utilizada como índice
  • usecols, qué columnas deben leerse
  • apretar, cuando los datos contienen solo una columna
  • convertidores, tipo de datos de columna obligatorio
  • saltear filas, saltar filas específicas
  • nrows, el número de filas a leer
  • skipfooter, omite las últimas n líneas
import pandas as pd 
import os

file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
df = pd.read_excel(base_path)
print(df)

 


写入 数据
语法 :
DataFrame.to_excel (excel_writer, sheet_name = 'Sheet1', na_rep = '', float_format = None, columnas = None, header = True, index = True, index_label = None, startrow = 0, startcol = 0, engine = None, merge_cells = True, encoding = None, inf_rep = 'inf', verbose = True, freeze_panes = None)
参数 说明 :

  • excel_writer: ruta del archivo o ExcelWriter existente
  • sheet_name: el nombre de la hoja de trabajo que contendrá el archivo de datos
  • na_rep: representación de datos faltantes
  • float_format: formatea una cadena de números de coma flotante. Por ejemplo, float_format = "%. 2f" tiene un formato de 0.1234 a 0.12.
  • columnas: columnas
  • encabezado: escriba el nombre de la columna. Si se proporciona una lista de cadenas, se asume que es un alias para el nombre de la columna.
  • índice: escribe el nombre de la fila (índice)
  • index_label: si es necesario, la etiqueta de la columna de índice. Si no se especifica y el encabezado y el índice son verdaderos, se usa el nombre del índice. Si el DataFrame usa múltiples índices, se debe dar una secuencia.
  • startrow: la fila de la celda en la esquina superior izquierda vuelca el marco de datos.
  • startcol: volca el marco de datos en la columna de la celda superior izquierda.
  • motor: escriba el motor "openpyxl" o "xlsxwriter" que se utilizará. También puede configurarlo con las opciones io.excel.xlsx.writer, io.excel.xls.writer y io.excel.xlsm.writer.
  • merge_cells: escriba varias filas de índice y jerarquía en celdas combinadas.
  • codificación: codifica el archivo de Excel generado. Solo es necesario para xlwt, otros escritores admiten Unicode.
  • inf_rep: representa el infinito.
  • detallado: muestra más información en el registro de errores.
  • freeze_panes: especifique la fila inferior y la columna derecha que se congelarán
from pandas import DataFrame

data = {'name': ['张三', '李四', '王五'],'age': [11, 12, 13],'sex': ['男', '女', '男']}

df = DataFrame(data)

df.to_excel('file.xlsx')

 

Supongo que te gusta

Origin blog.csdn.net/Python_sn/article/details/111553321
Recomendado
Clasificación