赞
踩
写入excel无所谓用哪个,后缀改一下就可以了。
主要用xlwt处理xls
import xlwt def datas\_2\_excel\_xls(datas,file_path): # 创建一个Workbook对象,这就相当于创建了一个Excel文件 workbook = xlwt.Workbook(encoding="utf-8", style_compression=0) # 添加一个工作表 worksheet = workbook.add_sheet('Sheet1', cell_overwrite_ok=True) for row in range(len(datas)): for col in range(len(datas[0])): worksheet.write(row, col, datas[row][col]) # 保存为Excel文件 workbook.save(file_path) if __name__ == '\_\_main\_\_': demo_datas = [ ['Number', 'Batch', 'ID'], [2, 'A', '001'], [4, 'B', '002'], [6, 'A', '003'], [8, 'C', '004'] ] file_path = 'example.xls' datas_2_excel_xls(demo_datas,file_path)
import xlrd def read\_xls\_xlrd(file_path): # 打开 Excel 文件 workbook = xlrd.open_workbook(file_path) # 选择工作簿中的一个工作表 worksheet = workbook.sheet_by_index(0) # 通过索引选择,0 表示第一个工作表 # 或者 # worksheet = workbook.sheet\_by\_name('Sheet1') # 通过名称选择工作表 # 获取工作表的行数和列数 rows = worksheet.nrows cols = worksheet.ncols datas = [] # 1.遍历工作表,获取每行的内容,按行 for i in range(rows): data = worksheet.row_values(i) # 打印整行内容 datas.append(data) # #2.遍历工作表每个数据,按单元格 # for i in range(rows): # data = [] # for j in range(cols): # data.append(worksheet.cell\_value(i,j)) # datas.append(data) # print(datas) # # 也可以获取特定单元格的内容 # cell\_value = worksheet.cell\_value(0, 0) # 获取第一行第一列的单元格内容 # print(cell\_value) return datas if __name__ == '\_\_main\_\_': file_path = 'example.xls' req_datas = read_xls_xlrd(file_path) print(req_datas)
处理xlsx有两个都可以用
1.xlsxwriter
2.openpyxl
xlsxwriter 是一个用于创建和写入 Excel 2010 xlsx 文件的 Python 模块。它提供了一个用于写入 Excel
文件的简单接口,支持创建工作簿、工作表、设置单元格样式、合并单元格等功能。与 openpyxl 不同,xlsxwriter
主要用于写入数据到 Excel 文件,而不是读取或修改现有文件。
import xlsxwriter def datas\_2\_excel\_xlsx\_xlsxwriter(datas,file_path): wb = xlsxwriter.Workbook(file_path) sheet = wb.add_worksheet('Sheet1') # 样式设置 format1 = { 'font\_name': '宋', # 字体 'font\_size': 10, # 字体大小 'font\_color': 'black', # 字体颜色 'bold': True, # 是否粗体 'align': 'center', # 水平居中对齐 'valign': 'vcenter', # 垂直居中对齐 'right': 1, 'bottom': 2, # 底边框 'bg\_color': '#ffc7ce', # 设置背景颜色粉色 } # 默认背景白色 format2 = { 'font\_name': '宋', # 字体 'font\_size': 10, # 字体大小 'font\_color': 'black', # 字体颜色 'bold': True, # 是否粗体 'align': 'center', # 水平居中对齐 'valign': 'vcenter', # 垂直居中对齐 'right': 1, 'bottom': 2, # 底边框 } red_style = wb.add_format(format1) white_style = wb.add_format(format2) # 设置列宽 sheet.set_column(0, 0, 15) sheet.set_column(1, 1, 15) # 设置列宽 sheet.set_column(0, 0, 15) sheet.set_column(1, 1, 15) for row in range(len(datas)): for col in range(len(datas[0])): sheet.write(row, col, datas[row][col], white_style) wb.close() if __name__ == '\_\_main\_\_': demo_datas = [ ['Number', 'Batch', 'ID'], [2, 'A', '001'], [4, 'B', '002'], [6, 'A', '003'], [8, 'C', '004'] ] file_path = 'example.xls' datas_2_excel_xlsx_xlsxwriter(demo_datas, file_path)
import openpyxl def get\_rules(worksheet): # 获取条件格式规则及其索引 datas = {} for index, rules in worksheet.conditional_formatting._cf_rules.items(): # 打印规则的详细信息 for rule in rules: try: print(f"Rule Index: {index.sqref}") print(f"Rule Type: {rule.type}") print(f"Formula: {rule.formula}") print(f"Stop If True: {rule.stopIfTrue}") # print(f"Show Formula Bar: {rules.showFormulaBar}") # print(f"Priority: {rule.priority}") # ... 你可以根据需要添加更多属性的访问 print() except: pass datas[index.sqref] = { 'Rule Index':index.sqref, 'Rule Type':rule.type, 'Formula':rule.formula, 'Stop If True':rule.stopIfTrue } return datas def read\_xlsx\_openpyxl(file_path): wb = openpyxl.load_workbook(file_path) sheet = wb.get_sheet_by_name(wb.sheetnames[0]) datas = [] #获取条件格式 #datas = get\_rules(sheet) #print(datas) #获取数据 for i in range(1, sheet.max_row + 1): data = [] for j in range(1, sheet.max_column + 1): data.append(sheet.cell(i, j).value) datas.append(data) return datas if __name__ == '\_\_main\_\_': file_path = 'example.xlsx' req_datas = read_xlsx_openpyxl(file_path) print(req_datas)
openpyxl 是一个用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。它允许用户创建新的 Excel 文件,修改现有的文件,以及从文件中读取数据。此外,openpyxl 还支持添加图表、图像、表格等元素到 Excel 文件中。
注意和其他方法不一样的是,openpyxl是用numpy为基础,打包很大,行列从1开始。
import openpyxl from openpyxl.styles import NamedStyle, Font, Alignment, Border, Side, PatternFill, Color from openpyxl.utils import get_column_letter from openpyxl.styles.fills import PatternFill def set\_style(): # ☝定义样式 style = NamedStyle(name='format1') # 字体 # openpyxl.styles.fonts.Font(name=None, sz=None, b=None, i=None, charset=None, u=None, strike=None, color=None, # scheme=None, family=None, size=None, bold=None, italic=None, strikethrough=None, # underline=None, vertAlign=None, outline=None, shadow=None, condense=None, extend=None) # 常用设置: # name==字体名称 # color==字体颜色=Color # sz==size==字体大小=float # b==bold==是否粗体=bool # i==italic==是否斜体=bool # u==underline==下划线 # 取值范围: 'single', 'doubleAccounting', 'singleAccounting', 'double' # strike==strikethrough== 删除线=bool # vertAlign 取值范围 'superscript', 'baseline', 'subscript' # superscript==上标 # subscript==下标 font = Font(name="黑体", sz=10, b=True, i=True, color=Color('00000000')) style.font = font # 边框 # openpyxl.styles.borders.Side(style=None, color=None, border\_style=None) # style 取值范围: # style == 'dashDot', 'dashDotDot', 'dashed', 'mediumDashDot', 'double', 'slantDashDot', 'thin', 'hair', 'dotted', # 'thick', 'mediumDashed', 'mediumDashDotDot', 'medium' l_side = Side(style='hair', color=Color('00000000')) r_side = Side(style='hair', color=Color('00000000')) t_side = Side(style='hair', color=Color('00000000')) b_side = Side(style='thick', color=Color('00000000')) border = Border(left=l_side, right=r_side, top=t_side, bottom=b_side, vertical=l_side) style.border = border # 设置水平方向对齐方式 alignment = Alignment() # horizontal 取值范围: # horizontal = {'right', 'justify', 'fill', 'center', 'general', 'left', 'distributed', 'centerContinuous'} alignment.horizontal = 'center' # vertical 取值范围: # vertical = {'bottom', 'justify', 'center', 'top', 'distributed'} alignment.vertical = 'center' # 单元格设置 style.alignment = alignment # 填充 # openpyxl.styles.fills模块: # openpyxl.styles.fills.GradientFill 用渐变填充区域 # openpyxl.styles.fills.PatternFill 用图案填充区域 ## openpyxl.styles.fills.GradientFill(type='linear', degree=0, left=0, right=0, top=0, bottom=0, stop=()) # 支持两种渐变填充 # 1.type='linear'渐变在一个区域的长度上,在一组指定的停止点之间插入颜色 # 2.type='path'渐变从区域的每个边缘应用线性渐变 # from openpyxl.styles.fills import GradientFill # cell.fill = GradientFill(type='linear', stop=(Color(indexed=10), Color(indexed=20), Color(indexed=30))) # cell.fill = GradientFill(type='path', stop=(Color(indexed=10), Color(indexed=20), Color(indexed=30))) # openpyxl.styles.fills.PatternFill 用图案填充区域 # openpyxl.styles.fills.PatternFill(patternType=None, fgColor= < openpyxl.styles.colors.Color object > # bgColor = < openpyxl.styles.colors.Color object > # fill\_type = None, start\_color = None, end\_color = None) # patternType 取值范围: # 'gray0625', 'gray125', 'solid', 'darkHorizontal', 'lightGrid', 'lightTrellis', 'lightVertical', # 'mediumGray', 'darkTrellis', 'lightGray', 'darkUp', 'darkGrid', 'lightHorizontal', 'lightUp', 'darkDown', # 'darkGray', 'darkVertical', 'lightDown' # from openpyxl.styles.fills import PatternFill # # cell.fill = PatternFill(patternType='solid', fgColor=Color(indexed=10)) # black_fill = PatternFill(start_color="00000000", end_color="00000000", fill_type="solid") # red\_fill = PatternFill(start\_color="00FF0000", end\_color="00FF0000", fill\_type="solid") style.fill = black_fill return style def datas\_2\_excel\_xlsx\_openpyxl(datas, file_path): wb = openpyxl.Workbook() sheet = wb.get_sheet_by_name(wb.sheetnames[0]) # 设置第1列的宽度为30 column_index = 1 column_letter = get_column_letter(column_index) sheet.column_dimensions[column_letter].width = 20 wb.add_named_style(set_style()) for row in range(1, len(datas) + 1): for col in range(1, len(datas[0]) + 1): # 获取单元格 cell = sheet.cell(row, col ) cell.style = 'format1' value = datas[row-1][col-1] cell.value = value wb.save(file_path) if __name__ == '\_\_main\_\_': demo_datas = [ ['Number', 'Batch', 'ID'], [2, 'A', '001'], [4, 'B', '002'], [6, 'A', '003'], [8, 'C', '004'] ] file_path = 'example1.xlsx' datas_2_excel_xlsx_openpyxl(demo_datas, file_path)
import openpyxl from openpyxl.styles import NamedStyle, Font, Alignment, Border, Side, PatternFill, Color from openpyxl.utils import get_column_letter from openpyxl.styles.fills import PatternFill def set\_style(): # ☝定义样式 style = NamedStyle(name='format1') # 字体 # openpyxl.styles.fonts.Font(name=None, sz=None, b=None, i=None, charset=None, u=None, strike=None, color=None, # scheme=None, family=None, size=None, bold=None, italic=None, strikethrough=None, # underline=None, vertAlign=None, outline=None, shadow=None, condense=None, extend=None) # 常用设置: # name==字体名称 # color==字体颜色=Color # sz==size==字体大小=float # b==bold==是否粗体=bool # i==italic==是否斜体=bool # u==underline==下划线 # 取值范围: 'single', 'doubleAccounting', 'singleAccounting', 'double' **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。** **深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!** **因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。** ![img](https://img-blog.csdnimg.cn/img_convert/25cb18afd56ceb04f3d79e27683c990c.png) ![img](https://img-blog.csdnimg.cn/img_convert/176e25fed290bef754ff0ac0326952e5.png) ![img](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png) ![img](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png) ![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png) ![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png) **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!** **由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新** **如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)** g.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png) ![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png) ![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png) **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!** **由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新** **如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)** <img src="https://img-community.csdnimg.cn/images/fd6ebf0d450a4dbea7428752dc7ffd34.jpg" alt="img" style="zoom:50%;" />
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。