Comment python gère-t-il les tables ?
Comment python gère les tableaux :
Python utilise principalement les deux bibliothèques xlrd et xlwt pour faire fonctionner Excel, c'est-à-dire que xlrd sert à lire Excel et xlwt est pour écrire une bibliothèque Excel. Il peut être téléchargé depuis https://pypi.python.org/pypi. Les enregistrements suivants enregistrent respectivement la lecture et l'écriture de Python sur Excel.
Écrire Excel en Python - xlwt
La difficulté d'écrire Excel en Python n'est pas la construction d'un classeur lui-même, mais les données renseignées, mais cela n'entre pas dans le cadre. Il existe également des problèmes épineux lors de l'écriture dans Excel. Par exemple, l'écriture de cellules fusionnées est plus délicate et il existe différents styles d'écriture.
Le code détaillé est le suivant :
import xlwt #设置表格样式 def set_style(name,height,bold=False): style = xlwt.XFStyle() font = xlwt.Font() font.name = name font.bold = bold font.color_index = 4 font.height = height style.font = font return style #写Excel def write_excel(): f = xlwt.Workbook() sheet1 = f.add_sheet('学生',cell_overwrite_ok=True) row0 = ["姓名","年龄","出生日期","爱好"] colum0 = ["张三","李四","恋习Python","小明","小红","无名"] sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True)) #写第一列 for i in range(0,len(colum0)): sheet1.write(i+1,0,colum0[i],set_style('Times New Roman',220,True)) sheet1.write(1,3,'2006/12/12') sheet1.write_merge(6,6,1,3,'未知')#合并行单元格 sheet1.write_merge(1,2,3,3,'打游戏')#合并列单元格 sheet1.write_merge(4,5,3,3,'打篮球') f.save('test.xls') if __name__ == '__main__': write_excel()
Image du résultat :
Ici, l'utilisation de write_merge() est brièvement expliquée, comme ci-dessus :sheet1.write_merge(1,2,3,3,'playing games'), c'est-à-dire fusionner les 2e et 3e colonnes en quatre colonnes. Le contenu de la cellule fusionnée est "total" et le style est défini. Parmi eux, tous les paramètres sont calculés à partir de 0.
Python lit Excel - xlrd
Python lit les tableaux Excel. Par rapport à xlwt, xlrd fournit plus d'interfaces, mais le processus présente également plusieurs problèmes gênants, tels que la lecture de la date et la lecture du contenu des cellules fusionnées.
Regardons les opérations de base :
L'idée générale est d'ouvrir le fichier, de sélectionner le tableau, de lire le contenu des lignes et des colonnes, et lisez les données dans le tableau
Le code détaillé est le suivant :
import xlrd from datetime import date,datetime file = 'test3.xlsx' def read_excel(): wb = xlrd.open_workbook(filename=file)#打开文件 print(wb.sheet_names())#获取所有表格名字 sheet1 = wb.sheet_by_index(0)#通过索引获取表格 sheet2 = wb.sheet_by_name('年级')#通过名字获取表格 print(sheet1,sheet2) print(sheet1.name,sheet1.nrows,sheet1.ncols) rows = sheet1.row_values(2)#获取行内容 cols = sheet1.col_values(3)#获取列内容 print(rows) print(cols) print(sheet1.cell(1,0).value)#获取表格里的内容,三种方式 print(sheet1.cell_value(1,0)) print(sheet1.row(1)[0].value)
Le résultat d'exécution est le suivant :
Alors la question est, dans le résultat ci-dessus, la case rouge Le champ est clairement la date de naissance et le nombre à virgule flottante réel qui peut être affiché en même temps, il devrait y avoir du contenu dans les cellules fusionnées et le résultat ; ne peut pas être vide.
Ne vous inquiétez pas, résolvons ces deux problèmes un par un :
1. Comment python lit le contenu de la cellule dans Excel sous forme de date
Python lit le contenu de la cellule dans excel Il existe 5 types de contenu de cellule renvoyés, à savoir le ctype dans l'exemple ci-dessus :
ctype : 0 vide, 1 chaîne, 2 nombres, 3 date, 4 booléen, 5 erreur
que est le ctype de date=3. Dans ce cas, vous devez utiliser le xldate_as_tuple de xlrd pour le traiter au format date. Ce n'est que lorsque le ctype=3 de la table est jugé que xldate peut démarrer l'opération.
Le code détaillé est le suivant :
import xlrd from datetime import date,datetime print(sheet1.cell(1,2).ctype) date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode) print(date_value) print(date(*date_value[:3])) print(date(*date_value[:3]).strftime('%Y/%m/%d'))
2 Récupérez le contenu des cellules fusionnées
Avant d'opérer, introduisons merged_cells(. ) Utilisation, la signification des quatre paramètres renvoyés par merged_cells est : (row, row_range, col, col_range), où [row, row_range) inclut row, n'inclut pas row_range, et il en va de même pour col, c'est-à-dire ( 1, 3, 4, 5) La signification de (7, 8, 2, 5) est : fusionner les lignes 1 à 2 (à l'exclusion de 3), et la signification de (7, 8, 2, 5) est : fusionner les colonnes 2 à 4.
Le code détaillé est le suivant :
print(sheet1.merged_cells)print(sheet1.cell_value(1,3)) print(sheet1.cell_value(4,3)) print(sheet1.cell_value(6,1))
Avez-vous trouvé le patron ? Oui, obtenez simplement l'indice faible de la ligne et du col renvoyé par merge_cells ! Vous pouvez donc l'obtenir par lots comme celui-ci :
Le code détaillé est le suivant :
merge = [] print(sheet1.merged_cells) for (rlow,rhigh,clow,chigh) in sheet1.merged_cells: merge.append([rlow,clow]) for index in merge: print(sheet1.cell_value(index[0],index[1]))
Le résultat d'exécution est le même que sur l'image, comme suit :
Tutoriel recommandé : 《python》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!