前言

python操作execl表的库有很多,如:pandas、openpyxl 等,使用起来各有优劣;
这里统计了在日常工作中常用的操作,结合的多个库;
依赖库的安装略过,都是老司机了,处理依赖库的问题还不手拿把攥的?
新手请 必应搜索(这里推荐微软的 必应搜索,示例:如果你不知道基金是什么,用百度搜“基金”的话,想都不用想,得到的结果绝对是哪个基金收益高之类的,qnmd,我想知道什么基金!)

读取数据

1.读取execl某一列数据

import pandas as pd
execlFile_path = r"E:\execl统计存放\仪器编号.xlsx"
da_execl = pd.read_excel(execlFile_path,sheet_name="Sheet1",keep_default_na=False)
data_list = da_execl["name"].values.tolist()   #读取name列,获取数组
print(data_lis)    #输出数组

pandas读取execl后,为空的数据会显示 nan;
添加 keep_default_na=False 后,才显示为空字符串;

2.读取某个单元格的数据

import openpyxl

execl_name = r"E:\execl统计存放\test_table.xlsx"
wb = openpyxl.load_workbook(execl_name)     #打开execl
ws = wb['Sheet1']       #定位工作簿
result = ws.cell(row = 2, column = 2).value  #第二行第二列的单元格
print(result)

或者

from openpyxl import load_workbook

wb2 = load_workbook(r"E:\execl统计存放\result_list.xlsx")    # 加载工作簿
ws2 = wb2['Sheet1']     #定位工作簿

value_1 = ws2['B2'].value    #B2单元格
print(value_1)

wb2.close()     #关闭

3.读取范围单元格

读取B2到C4的数据
按照 B2、B3、B4、C2、C3、C4 输出.

from openpyxl import load_workbook

wb2 = load_workbook(r"E:\execl统计存放\result_list.xlsx")    # 加载工作簿
ws2 = wb2['Sheet1']     # 获取sheet页

cell_range = ws2['B2':'C4']
print(cell_range)
for i in cell_range:
    for ii in i:
        print(ii.value)

可以通过此方法读取某一行数据

写入数据

1.写入一列数据

将一个数组写入execl的某一列

file_execl = r"E:\禾柏其他文件\execl统计存放\result_list.xlsx"
df = pd.DataFrame(
	{
		'姓名': name_list,
		'学校': school_list,
		'地址': localhost_list
	}
)
df.to_excel(file_execl,sheet_name="Sheet1")

name_list、school_list、localhost_list 是数据量相等的数组;
如果数组的数组量不相等,会写入错误;
此种方法会覆盖原有数据,相当于新建,并是不新增数据;

2.在多个Sheet中写入数据

将一个数组写入execl的某一列

import pandas as pd

list_1 = ["孙悟空","猪八戒","白龙马"]
list_2 = ["蛮王","寒冰","皇子"]
list_3 = ["马云","马化腾","我"]


writer = pd.ExcelWriter(r'E:\禾柏其他文件\四期execl表处理\test.xlsx')
df1 = pd.DataFrame(
   {
      '西游记': list_1,
      '英雄联盟': list_2
   }
)
df2 = pd.DataFrame(
   {
      '英雄联盟': list_2,
        "有钱人":list_3
   }
)
df3 = pd.DataFrame(
   {
      '西游记': list_1,
        "有钱人":list_3
   }
)

df1.to_excel(writer,"Sheet1")
df2.to_excel(writer,"Sheet2")
df3.to_excel(writer,"Sheet3")

writer.save()

此种方法也是属于覆盖,不过是一次性写入了多个Sheet中;

3.在指定单元格写入数据

import openpyxl

execl_name = r"E:\execl统计存放\test_table.xlsx"
wb = openpyxl.load_workbook(execl_name)     #打开execl
ws = wb['Sheet1']       #定位工作簿
#在 第2行第2列 写入 “我就是天才”
ws.cell(row = 2, column = 2).value = "我就是天才"

wb.save(execl_name)     # 保存操作

或者

import openpyxl

execl_name = r"E:\execl统计存放\test_table.xlsx"
wb = openpyxl.load_workbook(execl_name)     #打开execl
ws = wb['Sheet1']       #定位工作簿
#在 B2单元格 写入字符串
ws['B2'].value = 'python源码第332行有毒'

wb.save(execl_name)     # 保存操作

在指定单元格写入数据,相当于修改,只修改指定单元格数据,并不会像pandas那样清空其他列的数据;

其他操作

1.自动创建新的execl

from openpyxl import Workbook

wb = Workbook()    # 创建一个工作簿对象
# 在索引(Sheet)为1的位置创建一个名为mytest的工作簿
ws = wb.create_sheet('mytest',1)
ws.sheet_properties.tabColor = 'ff72BA'  #对sheet页设置颜色(16位的RGB颜色)
wb.save('Mytest.xlsx')    # 将创建的工作簿保存为Mytest.xlsx
wb.close()    # 最后关闭文件

此处会创建一个新的execl表,表内新建了一个新的Sheet工作簿,命名为Mytest

2.获取所有工作簿名称

from openpyxl import load_workbook

wb2 = load_workbook(r"E:\execl统计存放\test.xls")    # 加载工作簿
print(wb2.sheetnames)   #输出工作簿名称

或者

import pandas as pd
execl_name = r"E:\execl统计存放\test.xls"
df = pd.read_excel(execl_name, sheet_name=None)
print(list(df))

或者

import pandas as pd
execl_name = r"E:\execl统计存放\test.xls"
df = pd.read_excel(execl_name,sheet_name=None)
for i in df.keys():
    print(i)

3.填充单元格颜色

from openpyxl import load_workbook
from openpyxl.styles import  PatternFill,colors

execl_name = r"E:\execl表处理\test.xlsx"
wb2 = load_workbook(execl_name)    # 加载工作簿
ws2 = wb2['Sheet1']     # 获取sheet页
fill = PatternFill("solid", fgColor="FF0000")   #定义格式和颜色(颜色为十六进制)
ws2['B4'].fill = fill   #将 B4 单元格底色标红

#保存文件
wb2.save(execl_name)

后续允许的话,会继续添加常用的方法。

转载请注明出处!—— 星火燎愿

打赏
支付宝 微信
上一篇 下一篇