Python对Excel的常规操作 之 读取,写入(保留原格式写入)

Python对Excel的常规操作 之 读取,写入(保留原格式)

前言

使用Python读写Excel常用的库有win32comxlrdxlwd。其中win32com可读可写,它对Excel的操作更类似于人的手动操作,通过打开文件,读写,关闭软件的方式完成操作,因此如果该文件已经打开或被占用,可能导致某些操作失败。xlrd用于读取Excel文件,xlwd用于写入Excel文件,这两个库并没有直接调用Excel程序打开和关闭的动作,因此处理速度要高于使用win32com的方式。

TIPS: 如果想把某些抓来的数据,写入已经设计好的Excel文件中(尤其是比较复杂的,有很多合并的单元格,颜色,边框),使用xlwd的方式就不太方便,即使可以使用xlwd做出来,但需要花费较长时间。因此本文主要讲解xlrd的读取功能和win32com的读写功能。

xlrd的读取

import xlrd

Base_data = xlrd.open_workbook(path)  # path为读取Excel文件路径
Data = Base_data.sheet_by_name("Parameter")  # 使用Sheet名作为索引,读取该表
# 至此,文件已经读入Python了,可以做一些读取动作

# Tips: xlrd 的索引是从0开始的,这意味着从Excel文件看到的第一列第一行对应的索引应该为(0, 0),而非(1, 1)

# 列读取
Data_1 = Data.col_values(9)  # 读取第10列,存至列表Data_1
Data_2 = Data.col_values(10)  # 读取第11列,存至列表Data_2

#行读取
data_3 = Data.row_values(0)  # 读取第1行,存至列表Data_3
data_4 = Data.row_values(1)  # 读取第2行,存至列表Data_4

# 单元格读取
data_5 = Data.cell_value(i, j)  # 读取第i行,第j列数据存至Data_5

# 获取行数列数
rows = Data.nrows  # 获取行数
cols = Data.ncols  # 获取列数

win32com 的读写

使用win32com进行读写时速度会慢很多,因此推荐读取使用xlrd库,写入使用win32com。但是win32com好处是它可以保存原文件格式,同时还可以打开受密码保护的文件,也可以对格式进行调整,如加粗字体、单元格添加颜色背景等(用到时会陆续更新)

from win32com import client
xlApp_1 = client.Dispatch("Excel.Application")
xlApp_1.Visible = False  # 软件不可见 True为可见
xlBook_1 = xlApp_1.Workbooks.Open("D:\LEON\Sevenstar\Files\Template\Special Mode Template.xlsx")
xlSheet_1 = xlBook_1.Worksheets(1)  # 打开第1个表
xlSheet_1 = xlBook_1.Worksheets("CSDN")  # 打开名为“CSDN”的sheet

info_1 = xlSheet_1.UsedRange
nrows_1 = info_1.Rows.Count  # sheet1行数
ncols_1 = info_1.Columns.Count  # sheet1列数

# 读取
print(xlSheet_1.Cells(i, j).Value)

# 写入
xlSheet_1.Cells(i, j).Value = "CSDN"

# 保存
xlBook_1.Save()

# 另存为
xlBook_1.SaveAs(path)  # path 为另存路径

# 退出表格
xlBook_1.Close(True)

# 关闭Excel软件,可关闭你打开的全部Excel文件
xlApp_1.Quit()


"""
修改格式
"""
# 字体加粗
xlSheet_report.Cells(i, j).Font.Bold = True

#单元格背景颜色
xlSheet_report.Cells(i, j).Interior.ColorIndex = 45

下图是单元格背景颜色对应表,如红色背景,则 xlSheet_report.Cells(i, j).Interior.ColorIndex = 3
在这里插入图片描述

写在后面

在写入Excel时,可以使用 for循环 + 列表索引 的方式将所需的内容写入文件。

# 将1,2,3,4,5 写入第一列 1~5行
List = [1, 2, 3, 4, 5]
for i in range(0, len(List), 1):
    xlSheet_report.Cells(i, 1).Value = List[i]

使用Python操作Excel在工作中会经常用到,在后面的工作中,如果遇到其他有用的功能会陆续补充。

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页