Python操作excel基础

简介: Python操作excel基础

  办公自动化是将现代化办公和计算机技术结合起来的一种新型的办 公方式 office 家族其实都可以用 VBA 解决自动化的问题,但可能很多人不 会用 python 针对 excel 有很多的第三方库可以用,比如 xlwings、 xlsxwriter、xlrd、xlwt、pandas、 xlsxwriter、win32com、xlutils 等等 这些库可以很方便地实现对 excel 文件的增删改写、格式修改等, 当然并不推荐你全部都去学 尝试一下,这样时间成本太大了

xlrd:用于读取 Excel 文件;


xlwt:用于写入 Excel 文件;


xlutils:用于操作 Excel 文件的实用工具,比如复制、分割、筛选等


Excel写入数据-xlwt

安装


pip install xlwt


常用方法



代码演示

# 导入xlwt模块
import xlwt
# 创建excel
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('电影')
# 往工作薄的单元格增加数据
    # ws.write(row,col) 从0开始记数
    # 增加第1行数据
ws.write(0,0,'影片')
ws.write(0,1,'综合票房')
ws.write(0,2,'票房占比')
ws.write(0,3,'排片场次')
    # 增加第2行数据
ws.write(1,0,'如果声音记不得')
ws.write(1,1,361.57)
ws.write(1,2,33.3)
ws.write(1,3,95371)
# 保存数据
wb.save('./create_data/01_电影数据.xlsx')


Excel读取数据-xlrd

安装


pip install xlrd


常用方法与属性

代码演示


# 导入模块
import xlrd
# 打开excel文件
wb = xlrd.open_workbook('./create_data/01_电影数据.xlsx')
# 读取里面的数据
# 获取工作薄
print(f'excel中有{wb.nsheets}个工作薄')
print(f'excel中sheets的名字:{wb.sheet_names()}')
# 选中工作薄
ws1 = wb.sheet_by_index(0)
ws2 = wb.sheet_by_name('电影')
# print(ws1)
# print(ws2)
# 获取单元格的数据
print(f'sheet里面一共有{ws1.nrows}行 {ws1.ncols}列的数据')
# 获取单个单元格
print(f'第1行第2列的值:{ws1.cell_value(0,1)}')
print(f'第1行第2列的值:{ws1.cell(0,1).value}')
print(f'第1行第2列的值:{ws1.row(0)[1].value}')
# 获取多个单元格
print(f'第1行的数据是:{ws1.row_values(0)}')
print(f'第1列的数据是:{ws1.col_values(0)}')
# 获取所有单元格
for r in range(ws1.nrows):
    for c in range(ws1.ncols):
        print(f'第{r}行 第{c}列的数据是:{ws1.cell_value(r,c)}')


Excel更新数据-xlutils

安装


pip install xlutils


常用方法与属性

代码演示

import xlrd
from xlutils.copy import copy
# 读取文件
read_wb = xlrd.open_workbook('./create_data/01_电影数据.xlsx')
# 复制文件
wb = copy(read_wb)
# 修改数据
# 获取当前excel里面的第1个工作薄
ws =  wb.get_sheet(0)
# 增加数据
ws.write(5,0,'保家卫国')
ws.write(5,1,113)
ws.write(5,2,5.1)
ws.write(5,3,490)
# 增加统计信息
read_ws = read_wb.sheet_by_index(0)
count = 0
for r in range(1,read_ws.nrows):
    num = read_ws.cell_value(r,3)
    # 累加排场次数
    count += num
# 增加一个新的工作薄
new_ws = wb.add_sheet('汇总数据')
new_ws.write(0,0,'总排片次数')
new_ws.write(0,1,count)
# 保存数据
wb.save('./create_data/02_电影数据_new.xlsx')


Excel设置样式

常用方法与属性


设置字体

import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
ft = xlwt.Font()
ft.name = '微软雅黑' # 设置字体
ft.height = 30*20 # 设置字体大小
ft.bold = True # 设置字体加粗
ft.underline = True # 设置字体下划线
ft.italic = True # 设置字体斜体
ft.colour_index = 2 # 设置字体颜色
# 创建一个样式对象
style1 =  xlwt.XFStyle()
style1.font = ft
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/03_excel样式.xlsx')


设置边框

import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
boder = xlwt.Borders()
# 线的种类
# 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
boder.top = 1
boder.bottom = 6
boder.left = 4
boder.right = 5
# 线的颜色
boder.top_colour = 3
boder.bottom_colour = 4
boder.left_colour = 7
boder.right_colour = 6
# 创建一个样式对象
style1 =  xlwt.XFStyle()
style1.borders = boder
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/04_excel样式_边框.xlsx')


设置内容

import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
align = xlwt.Alignment()
# 设置 上下位置 0 上 1 中  2 下
align.vert = 1
# 设置 左右位置 1左 2中 3右
align.horz = 2
# 设置单元格大小
# 如果要设置单元格高度,需要开启设置高度属性
ws.row(2).height_mismatch= True # 开启设置高度权限
ws.row(2).height = 50 *256
ws.col(2).width = 50 * 50
# 创建一个样式对象
style1 =  xlwt.XFStyle()
style1.alignment = align
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/05_excel样式_内容位置.xlsx')


设置背景


import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN  # 实心颜色
pattern.pattern_fore_colour = 6
# 创建一个样式对象
style1 =  xlwt.XFStyle()
style1.pattern = pattern
# 通过easyxf()设置样式
style2 = xlwt.easyxf('font:bold on,colour_index 5;align: vert center,horiz center')
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
ws.write(3,3,'吕小布',style2)
# 保存数据
wb.save('./create_data/06_excel样式_背景颜色.xlsx')


Excel读取数据-openpyxl

Python操作Excel的一个常用库openpyxl,openpyl是第3方模块 库,可以方便的对excel执行读取与写入操作


安装


pip install openpyxl


常用方法与属性


# pip install openpyxl
from openpyxl import load_workbook
def open_excel():
    # 打开excel文件
    wb = load_workbook('./base_data/data01.xlsx')
    # 获取工作薄
    ws1 = wb.active
    ws2 = wb['Sheet1']
    ws3 = wb.get_sheet_by_name('Sheet1') #  DeprecationWarning 被抛弃,不推荐使用
    print(ws1)
    print(ws2)
    print(ws3)
    print(ws1 is ws2 is ws3)
def show_sheets():
    # 打开excel文件
    wb = load_workbook('./base_data/data01.xlsx')
    print(wb.sheetnames)
    for ws in wb:
        print(ws.title)
def get_one_value():
    # 打开excel文件
    wb = load_workbook('./base_data/data01.xlsx')
    ws = wb.active
    value1 = ws.cell(3,3).value  # 数字是从1开始记数
    value2 = ws['c3'].value
    print(value1)
    print(value2)
def get_many_value():
    # 打开excel文件
    wb = load_workbook('./base_data/data01.xlsx')
    ws = wb.active
    # 获取范围的单元格
    cells = ws['c1':'c5']
    print(cells)
    # 获取整行,整列
    cell_rows_6 = ws[6]
    cell_cols_c = ws['C']
    print(cell_rows_6)
    print(cell_cols_c)
    # 获取部分行
    cell_rows_6_10 = ws[6:10]
    print(cell_rows_6_10)
def get_many_value2():
    # 打开excel文件
    wb = load_workbook('./base_data/data01.xlsx')
    ws = wb.active
    for row in ws.iter_rows(min_row=11,max_row=15,max_col=4,min_col=3):
        for cell in row:
            print(cell)
def get_all_data_row():
    # 打开excel文件
    wb = load_workbook('./base_data/data01.xlsx')
    ws = wb.active
    for row in ws.rows:
        for cell in row:
            print(cell)
def get_all_data_col():
    # 打开excel文件
    wb = load_workbook('./base_data/data01.xlsx')
    ws = wb.active
    for col in ws.columns:
        for cell in col:
            print(cell)
def get_num():
    # 获取总行号,列号
    # 打开excel文件
    wb = load_workbook('./base_data/data01.xlsx')
    ws = wb.active
    print(ws.max_column)
    print(ws.max_row)
if __name__ =='__main__':
    # open_excel()
    # show_sheets()
    # get_one_value()
    # get_many_value()
    # get_many_value2()
    # get_all_data_row()
    # get_all_data_col()
    get_num()


Excel写入数据-openpyxl

常用方法与属性



from openpyxl import Workbook
def create_excel():
    # 创建excel
    wb = Workbook()
    # 激活第1个工作薄
    ws1 = wb.active
    # 创建工作薄
    ws2 = wb.create_sheet('数据')
    # 在指定位置创建工作薄、
    ws3 = wb.create_sheet('人员',0)
    # 保存数据
    wb.save('./create_data/09_创建excel文件.xlsx')
def set_value1():
    # 创建excel
    wb = Workbook()
    # 激活第1个工作薄
    ws1 = wb.active
    # 写入数据
    ws1['A1'] = 'Hello'
    ws1['B2'] = 'Excel'
    ws1['C3'] = 'Python'
     # 保存数据
    wb.save('./create_data/10_创建excel文件_写入数据.xlsx')
def set_value2():
    # 创建excel
    wb = Workbook()
    # 激活第1个工作薄
    ws1 = wb.active
    # 需要写入的数据
    data = ['Hello','Excel','Python']
    for i,d in enumerate(data):
        ws1.cell(i+1,i+1).value = d  # 注意 openpyxl里面 记数是从1开始
    # 保存数据
    wb.save('./create_data/11_创建excel文件_写入数据2.xlsx')
def set_value3():
    # 创建excel
    wb = Workbook()
    # 激活第1个工作薄
    ws1 = wb.active
    # 需要写入的数据
    data = ['Hello','Excel','Python']
    # 把数据追加到工作薄
    ws1.append(data)
    # 保存数据
    wb.save('./create_data/12_创建excel文件_写入数据3.xlsx')
if __name__ == '__main__':
    # create_excel()
    # set_value1()
    # set_value2()
    set_value3()


Excel写入样式-openpyxl

常用方法与属性



from openpyxl import Workbook
from openpyxl.styles import Font,colors,Alignment
def set_font():
    '''
    设置字体样式
    '''
    wb = Workbook()
    ws = wb.active
    ws['A1'] = 'Hello'
    ws['B2'] = 'Python'
    ws['C3'] = 'Excel'
    # 创建一个字体样式对象
    ft = Font(name='微软雅黑',size=30,italic=True,bold=True,color=colors.BLUE)
    ft2 = Font(name='微软雅黑',size=30,italic=True,bold=True,color='CDAD00')
    # 将字体的样式应用到单元格
    ws['B2'].font = ft
    ws['C3'].font = ft2
    # 保存数据
    wb.save('./create_data/13_openpyxl_字体样式.xlsx')
def set_aligment():
    '''
    设置内容对齐方式
    '''
    wb = Workbook()
    ws = wb.active
    ws['A1'] = 'Hello'
    ws['B2'] = 'Python'
    ws['C3'] = 'Excel'
    # 创建一个对齐方式对象
    aligment = Alignment(horizontal='left',vertical='top')
    aligment2 = Alignment(horizontal='right',vertical='bottom')
    # 设置单元格的宽与高
    ws.row_dimensions[1].height = 50
    ws.column_dimensions['A'].width = 50
    ws['B2'].alignment = aligment
    ws['C3'].alignment = aligment2
    # 保存数据
    wb.save('./create_data/14_openpyxl_位置样式.xlsx')
if __name__ =='__main__':
    # set_font()
    set_aligment()

 

from openpyxl import Workbook
from openpyxl.styles import Border,Side,colors,PatternFill
def set_border():
    '''
    设置边框样式
    '''
    wb = Workbook()
    ws = wb.active
    ws['A1'] = 'Hello'
    ws['B2'] = 'Python'
    ws['C3'] = 'Excel'
    # 创建一个线的样式对象
    side = Side(color=colors.BLUE,style='medium')
    side2 = Side(color='00008000',style='double')
    # 创建边框样式对象
    border = Border(left=side,right=side2,top=side,bottom=side2)
    # 将边框样式应用到单元格
    ws['B2'].border = border
    # 保存数据
    wb.save('./create_data/15_openpyxl_边框样式.xlsx')
def set_pattern():
    '''
    设置背景颜色
    '''
    wb = Workbook()
    ws = wb.active
    ws['A1'] = 'Hello'
    ws['B2'] = 'Python'
    ws['C3'] = 'Excel'
    # 创建背景的样式对象
    pattern = PatternFill('solid',fgColor=colors.BLUE)
    # 将背景颜色样式应用单元格, 不要用pattern属性
    ws['B2'].fill = pattern # AttributeError: 'Cell' object has no attribute 'pattern' 
    # 保存数据
    wb.save('./create_data/16_openpyxl_背景样式.xlsx')
if __name__ =='__main__':
    # set_border()
    set_pattern()

Excel合并单元格-openpyxl

常用方法与属性

from openpyxl import Workbook
def merge_cell():
    '''
    合并单元格
    '''
    wb = Workbook()
    ws = wb.active
    # 合并操作 A1:A5 合并一列
    ws.merge_cells('A1:A5')
    # 合并操作 A1:A5 合并一行
    ws.merge_cells('c1:h1')
    # 合并操作 A1:A5 合并多行,多列
    ws.merge_cells('c4:h8')
    # 注意:从小到大,从上到下,从前到后
    # 保存数据
    wb.save('./create_data/17_合并单元格.xlsx')
if __name__ =="__main__":
    merge_cell()
目录
相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
292 10
|
5月前
|
Python
Python办公自动化:xlwings对Excel进行分类汇总
Python办公自动化:xlwings对Excel进行分类汇总
136 1
|
1月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
3月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
188 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
261 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
2月前
|
机器学习/深度学习 前端开发 数据处理
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
99 0
|
4月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
83 2
|
4月前
|
Python
Python 自动化操作 Excel - 02 - xlwt
Python 自动化操作 Excel - 02 - xlwt
54 14
|
4月前
|
Python
Python 自动化操作 Excel - 03 - xlutils
Python 自动化操作 Excel - 03 - xlutils
50 13
|
4月前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
314 16

热门文章

最新文章