- Python制作JOJO石之海人物信息表
- 一、Excel的读与写
- 1、xlwt和wlrd的安装
- 2、xlwt模块
- (1)、基本函数
- (2)、使用案例
- (xlwt写入JOJO石之海人物信息表)
- (3)、局限性
- 3、xlrd模块
- (1)、基本函数
- (2)、使用案例
- 二、xlsxwriter模块
- 1、安装
- 2、基本函数
- 3.使用案例
- 三、⭐openpyxl模块⭐
- 1、安装
- 2、基本函数
- (1)、导包(Workbook、load_workbook与Font)
- (2)、Workbook
- (3)、load_workbook
- 3、使用方法(案例)
- (1)、遍历Excel工作表(或指定区域)
- (2)、多页工作表、设置字体
- (3)、单元格格式
- (4)、⭐制作JOJO石之海人物信息表⭐
Python中有2个基本的Excel *** 作库:xlwt和xlrd,用着不方便,但是也能用,而且xlwt和xlrd较直观地体现了Python对Excel的基本 *** 作流程。
1、xlwt和wlrd的安装pip3 install xlwt pip3 install xlrd==1.2.0
如果在xlrd的使用中出现如下错误:
raise XLRDError(FILE_FORMAT_DEscriptIONS[file_format]+'; not supported') xlrd.biffh.XLRDError: Excel xlsx file; not supported #即不支持Excel xlsx文件
解决方法为:
pip3 uninstall xlrd pip3 install xlrd==1.2.02、xlwt模块
xlwt即Excel write,是一个Python的写入Excel的库。
(1)、基本函数新建Excel文件:new_book = xlwt.Workbook()
新建工作表:sheet = new_book.add_sheet('xxx')
设置单元格宽度:sheet.col(y).width = num # num为数字
写入内容:sheet.write(r = x,c = y,label = 'xx')
其中r为行(row) c为列(col) 内容为label,且Excel中的第一行和第一列在python中都为0。
保存Excel文件:new_book.save('new_excel.xls')
等等。。。。。。
例一:
import xlwt # 导入xlwt库 new_book = xlwt.Workbook() # 新建Excel文件 sheet = new_book.add_sheet('sheet1') # 新建工作表 sheet.write(r = 0,c = 0,label = 'csdn') #行rel 列col 内容label sheet.write(r = 0,c = 1,label = '笠li笠') new_book.save('new_excel.xls') # 保存Excel文件
效果如下图所示:
import xlwt # 导入xlwt库 new_book = xlwt.Workbook() # 新建Excel文件 sheet = new_book.add_sheet('jojo_sheet') # 新建工作表 name_a = input('请输入你的姓名:') year_a = input('请输入你的年龄:') sub_a = input('请输入你的替身名称:') start_list = ['姓名','年龄','替身'] name_list = [ '空条徐伦', '空条承太郎', '艾梅斯·克斯提洛', 'F·F(幽浮一族)', '威斯·布鲁马林', '安波里欧·亚曼纽', '纳鲁西索·安娜苏', '恩里克·普奇(神父)' ] year_list = [ '19', '41', '21', '2', '39(享年)', '11', '25', '39' ] sub_list = [ '石之自由', '白金之星', 'Kiss(亲吻)', '本体', '天气预报', '放火烧厝、天气预报(DISC)', '潜行者', '白蛇、新月、天堂制造' ] name_list.append(name_a) # 添加name_a至name_list列表 year_list.append(year_a) # 添加year_a至year_list列表 sub_list.append(sub_a) # 添加sub_a至sub_list列表 sheet.col(0).width = 4444 # 设置单元格宽度 sheet.col(1).width = 3333 # 设置单元格宽度 sheet.col(2).width = 6666 # 设置单元格宽度 font = xlwt.Font() # 创建字体样式 font.bold = True # 字体加粗 alignment = xlwt.Alignment() # 创建单元格对齐方式样式 alignment.horz = 0x02 # 选择居中 style_one = xlwt.XFStyle() # 初始化样式 style_one.font = font # 字体 style_one.alignment = alignment # 对齐 style_two = xlwt.XFStyle() # 初始化样式 style_two.alignment = alignment # 对齐 for col_num in range(0,3): # 第一行,加粗(style) sheet.write(0, col_num, start_list[col_num], style_one) for col_num in range(0,3): num = 1 if col_num == 0: for name in name_list: sheet.write(num, col_num, name, style_two) #行rel 列col 内容label num = num + 1 if col_num == 1: for year in year_list: sheet.write(num, col_num, year, style_two) #行rel 列col 内容label num = num + 1 if col_num == 2: for sub in sub_list: sheet.write(num, col_num, sub, style_two) #行rel 列col 内容label num = num + 1 new_book.save('JOJO石之海.xls') # 保存Excel文件
效果如下图所示:
xlwt本身有其局限性,其只能保存xls类型文件,无法保存xlsx文件,否则会出现下图所示的错误。且xlwt不支持256列以上的编辑,错误如下图所示。
xlrd即Excel read,和xlwt一样,Excel中的第一行和第一列在python中都为0。
(1)、基本函数打开Excel文件:xl = xlrd.open_workbook('xx.xlsx')
获取对应工作表对象(1):table = xl.sheet_by_name('xx')
获取对应工作表对象(2):table = xl.sheet_by_index(num) # num为序号,从0开始第几工作表
获取所有工作表:nms = xl.sheet_names()
获取单元格对象(1):cell = table.cell(x,y)
获取单元格的值:cell.value
获取行信息:table.row(x)
获取列信息:table.col(y)
获取单元格对象(2):table.row(x)[y]
例:
import xlrd xl = xlrd.open_workbook('JOJO石之海.xls') table = xl.sheet_by_name('jojo_sheet') cell = table.cell(0,0) print('cell:',cell,'n') print('cell.value:',cell.value,'n') print('table.cell_value(x,y):',table.cell_value(0,0),'n') print('table.row(x):',table.row(0),'n') print('table.col(y):',table.col(1),'n') print('table.row(x)[y]:',table.row(0)[0],'n') nms = xl.sheet_names() # 获取所有工作表 print(nms)
效果如下图所示:
xlsxwriter相较于xlwt模块,没有其无法保存xlsx文件的缺陷,也支持256列以上的编辑,使用起来也较为方便。
1、安装pip3 install xlsxwriter2、基本函数
新建Excel文件:new_book = xlsxwriter.Workbook(‘xx.xlsx’)
新建工作表:sheet = new_book.add_worksheet('xxx')
写入内容:sheet.write(x,y, 'xx')
关闭工作表:new_book.close()
例:
import xlsxwriter new_book = xlsxwriter.Workbook('li.xlsx') sheet = new_book.add_worksheet('li') sheet.write(300,300,'哈哈') new_book.close()
效果如图所示:
pip3 install openpyxl2、基本函数 (1)、导包(Workbook、load_workbook与Font)
from openpyxl import Workbook #可用于创建新的excel from openpyxl import load_workbook #可用于打开excel from openpyxl.styles import Font # 可用于设置字体 from openpyxl.styles import Alignment # 可用于设置单元格格式(2)、Workbook
实例化,新建一个Excel的准备:wb = Workbook()
激活sheet:sheet = wb.active
更改sheet的标题:sheet.title = 'xx' # 第一个工作表
创建工作表(继第一个sheet再增加工作表):sheet = wb.create_sheet('xx')
选择工作表(1):work = wb['xx']
选择工作表(2):work = wb.get_sheet_by_name('xx')
获取所有工作表:wb.sheetnames
单元格写入内容:sheet['xy'] = xx # 'xy'为单元格的坐标,如A1,xx为写入的内容
单元格输入公式:sheet['xy'] = '=公式'
在当前已写入的最后一行的下一行写入行内容:sheet.append([xx,xx,xx,......])
设置字体:font = Font(name='xx', bold=True, italic=True, size=num)
保存Excel文件:wb.save('xx.xlsx')
打开已有的excel:wb = load_workbook('xx.xlsx')
查看当前excel中sheet的名字:wb.sheetnames=wb.get_sheet_names()
选择工作表(1):work = wb['xx']
选择工作表(2):work = wb.get_sheet_by_name('xx')
获取当前单元格内容:sheet['xy'].value
要遍历Excel工作表要先遍历行,再遍历列。代码如下:
from openpyxl import load_workbook #可用于打开excel wb = load_workbook('JOJO石之海.xlsx') sheet = wb['jojo_sheet'] for row in sheet: for cell in row: print(cell.value,end = ' ') print('n')
效果如下所示:
设置字体:font = Font(name='xx', bold=True, italic=True, size=num)
其中 name:字体类型;bold:字体是否粗体;italic:字体是否为斜体;size:字体大小
案例代码如下:
from openpyxl import Workbook #可用于创建新的Excel from openpyxl.styles import Font # 可用于设置字体 wb = Workbook() # 实例化 sheet_a = wb.active # 激活sheet sheet_a.title = 'a' # 更改sheet的标题 sheet_b = wb.create_sheet('b') # 添加工作表 # 定义字体类型 font_1 = Font(name='宋体', bold=True, italic=False, size=14) font_2 = Font(name='等线', bold=False, italic=True, size=14) sheet_a['A1'] = '笠li笠' sheet_a['B1'].font = font_1 # 设置单元格字体 sheet_a['B1'] = '笠li笠' sheet_a['C1'].font = font_2 sheet_a['C1'] = '笠li笠' sheet_b['A1'].font = font_1 # 设置单元格字体 sheet_b['A1'] = '笠li笠' sheet_b['B1'].font = font_1 sheet_b['B1'] = '19' sheet_b['C1'].font = font_2 sheet_b['C1'] = '♪(^∇^*)' sheet_b.append(['笠li笠',19,'♪(^∇^*)']) # 最后一行后面再添加新的一行 wb.save('ab.xlsx')
效果如下图所示:
调整列尺寸:sheet.column_dimensions['y'].width = num # (4)案例
调整行尺寸:sheet.row_dimensions[x].height = num
设置单元格居中:alignment = Alignment(horizontal='center', vertical='center')
设置单元格合并:sheet.merge_cells('x1y1:x2y2')
案例代码如下:
from openpyxl import Workbook #可用于创建新的Excel from openpyxl.styles import Alignment # 可用于设置单元格格式 wb = Workbook() # 实例化 alignment = Alignment(horizontal='center', vertical='center') sheet_a = wb.active # 激活sheet sheet_a.title = 'a' # 更改sheet的标题 sheet_a['A1'].alignment = alignment # 定义单元格格式 sheet_a['A1'] = '笠li笠' sheet_a.merge_cells('A1:C1') # 合并单元格A1至C1 wb.save('a.xlsx')
效果如下图所示:
案例代码如下:
from openpyxl import Workbook #可用于创建新的Excel from openpyxl.styles import Font # 可用于设置字体 from openpyxl.styles import Alignment # 可用于设置单元格格式 wb = Workbook() # 实例化 alignment = Alignment(horizontal='center', vertical='center') font_c = Font(name='宋体', bold=True, italic=False, size=11) font = Font(name='宋体', bold=False, italic=False, size=11) #------------------# DIO dio = [] name = input('你的名字:') year = input('你的年龄:') sub = input('你的替身:') dio.append(name) dio.append(year) dio.append(sub) #------------------# info = [ ['空条徐伦','19','石之自由'], ['空条承太郎','41','白金之星'], ['艾梅斯·克斯提洛','21','Kiss(亲吻)'], ['F·F(幽浮一族)','2','本体'], ['威斯·布鲁马林','39(享年)','天气预报'], ['安波里欧·亚曼纽','11','放火烧厝、天气预报(DISC)'], ['纳鲁西索·安娜苏' ,'25','潜行者'], ['恩里克·普奇(神父)','39','白蛇、新月、天堂制造'] ] info.append(dio) sheet = wb.active # 激活sheet sheet.title = 'jojo_sheet' # 更改sheet的标题 sheet.append(['姓名','年龄','替身']) # 添加第一行 #------------------# 设置第一行居中粗体 for row in sheet['A1:C1']: # 遍历第一行 for cell in row: cell.alignment = alignment # 设置单元格居中 cell.font = font_c # 设置单元格字体粗体 #------------------# #------------------# 调整列宽 sheet.column_dimensions['A'].width = 20 sheet.column_dimensions['B'].width = 11 sheet.column_dimensions['C'].width = 28 #------------------# #------------------# 添加info数据 for new in info: sheet.append(new) #------------------# #------------------# 设置单元格居中无粗体宋体 area = sheet['A2:C20'] # 定义填写范围 for row in area: # 遍历area区域进行居中设置 for cell in row: # 先遍历行,再遍历列 cell.font = font # 设置单元格字体无粗体 cell.alignment = alignment # 设置单元格居中 #------------------# wb.save('JOJO石之海.xlsx')
效果如下所示:
视频效果如下:
Python制作Excel表格
我是一名学生,目前正在学习中,本篇文章是我的学习笔记,如有错误的话还请指正。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)