博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python_excel
阅读量:6596 次
发布时间:2019-06-24

本文共 3248 字,大约阅读时间需要 10 分钟。

 参考博文:https://blog.csdn.net/xugexuge/article/details/82628792

一 相关说明:

1、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结尾的文件,需要使用 xlrd和xlwt库进行操作

2、excel表的文字编码如果是“gb2312” 读取后就会显示乱码,请先转成Unicode

3、workbook: 工作簿,一个excel文件包含多个sheet。

4、sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。

5、cell: 单元格,存储数据对象

 

二 openpyxl的使用方法

1、新建

import openpyxl # 新建一个空excel,表名为sheet,文件名为testwb = openpyxl.Workbook()  # 创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)wb.save('test.xlsx')

2.表操作

注:从此操作往后都使用如下的测试数据

import openpyxlimport openpyxl.styles # 打开已有的excelwb = openpyxl.load_workbook("test.xlsx") # ------------------ 表操作 ------------------# 新建sheet表wb.create_sheet(index=2, title="sheet3")  # 可通过index控制创建的表的位置 # 获取所有表名sheet_names = wb.sheetnames  # 得到工作簿的所有工作表名 结果: ['Sheet1', 'Sheet2', 'Sheet3'] # 根据表名删除sheet表wb.remove(wb[sheet_names[2]])  # 删除上一步建的第3个工作表 # 根据表名打开sheet表sheet1 = wb[sheet_names[0]]  # 打开第一个 sheet 工作表

3.读取数据

# ------------------ 读取数据 ------------------ # 获取单元格数据sheet1_max_colum = sheet1.max_column  # 获取最大列数 结果:3# ws = wb.active  # 获取当前活动的sheet页sheet1_max_row = sheet1.max_row  # 获取最大行数 结果:10A1_value = sheet1['A1'].value  # 获取单元格A1值 结果:a1A1_column = sheet1['A1'].column  # 获取单元格A1列值 结果: AA1_row = sheet1['A1'].row   # 获取单元格A1行号 结果: 1A1 = sheet1.cell(row=1, column=1).value  # 获取第一行第一列的单元格值 结果:a1 # 获取C列的所有数据list_sheet1_column_C = []for i in sheet1["C"]:    list_sheet1_column_C.append(i.value) # 获取第1行的所有数据list_sheet1_row_1 = []for i in sheet1[1]:    list_sheet1_row_1.append(i.value) # 读取所有数据list_sheet1_all = []for row in sheet1.rows:    for cell in row:        list_sheet1_all.append(cell.value)  # 按行循环获取所有的值,保存在 list_sheet1_all 列表中

4.写入数据

# ------------------ 写入数据 ------------------sheet1.cell(row=1, column=2, value="B1")  # 修改第一行第二列的单元格的值为B1sheet1["A1"] = "A1"  # 直接修改A1单元格的值为A1sheet1["B11"] = "B11"  # 新增B11单元格的值为B11sheet1.title = "test_sheet"  # 修改sheet1的表名为test_sheet

5.表格样式调整

# ------------------ 表格样式调整 ------------------# 表格样式支持:字体、颜色、模式、边框、数字格式等 # A1单元格 等线24号加粗斜体,字体颜色浅蓝色sheet1["B11"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True) # B1单元格 水平上下居中sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center") # 第一行高度设置为30sheet1.row_dimensions[1].height = 30 # C列的宽度设置为35sheet1.column_dimensions["C"].width = 35

6.保存文件

# 保存文件,注意文件打开时文件保存会出错wb.save("test.xlsx")

7.实际示例

需求:如下图,如果前一列值为“日期”,把后一列同一行的数据值改为“7”

 代码:

#!/usr/bin/python3# -*- coding: utf-8 -*-import openpyxldef op_excel(sheet1):       sheet1_max_colum = sheet1.max_column    col_num = None    for i in range(11, sheet1_max_colum):        if sheet1.cell(row=4, column=i).value == '数据类型':            col_num = i    if col_num == 14:        sheet1_max_row = sheet1.max_row        for i in range(4, sheet1_max_row):            # print("22222222",sheet1['N%s' % i].value)            if sheet1['N%s' % i].value == '日期':                # print(sheet1['O%s'%i].value)                sheet1['O%s' % i].value = 8if __name__ == '__main__':    wb = openpyxl.load_workbook(r'C:\Users\1\Desktop\xxx.xlsx')  # 打开excel文件    sheets = wb.sheetnames    sheet1 = wb[sheets[0]]    op_excel(sheet1)    wb.save(r"C:\Users\1\Desktop\1\xxx.xlsx")

 

转载于:https://www.cnblogs.com/fmgao-technology/p/10490065.html

你可能感兴趣的文章
求js数组中最小值
查看>>
UVA10018 Reverse and Add
查看>>
【转载】Jquery验证 Jquery.validate详细解读
查看>>
软件需求规格书
查看>>
用Java axis2调用.net平台的Webservice出现的一些问题
查看>>
VS2005内存泄漏检测方法[转载]
查看>>
三角形面积 蓝桥杯
查看>>
form的一个问题
查看>>
数据库操作
查看>>
利用JavaScript jQuery实现图片无限循环轮播(不借助于轮播插件)-----转载
查看>>
050:navie时间和aware时间详解
查看>>
如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)...
查看>>
【python】-- 函数、无参/有参参数、全局变量/局部变量
查看>>
基于WinSvr2016(TP)构建的“超融合技术架构”进阶篇
查看>>
关于使用Android NDK编译ffmpeg
查看>>
烂泥:记一次诡异的网络中断
查看>>
在 SELECT 查询中使用集运算符
查看>>
HTTP POST GET 本质区别详解
查看>>
正则表达式 之 C#后台应用
查看>>
对称加密与非对称加密
查看>>