Python 与 Office 办公软件专栏目录:14 篇博客从基础到实例,助力你的自动化办公梦

前言:

本篇博客为【 Python 与 Office 】 专栏的目录,该专栏共 14 篇文章。包含了 Python 操作 office常用办软件 Excel 与 Word 的基本方法介绍,和用 Python 处理 Excel Word 文档的几个实例。

个人认为本专栏还是比较全面与详细的,当然介于个人知识储备与能力,疏忽与错误之处可能也不少,望各位读者多多指正与包含。以下是本专栏的具体介绍:

Python 与 Excel

本专栏介绍的 Python 操作 Excel 模块为 xlwt 与 xlrd 模块

xlwt 模块是将数据写入Excel文件的 Python 第三方模块。

文章一:用 xlwt 将数据写入Excel文件简介

文章链接:xlwt 操作 excel 表格基础

文章主要内容:

该文章介绍了用 Python 建立新工作薄与工作表的基础方法:

# 导入模块
import xlwt

# 新建工作簿
work_book = xlwt.Workbook()

# 增加sheet表
work_sheet = work_book.add_sheet('Test')

# 单元格操作
work_sheet.write(0,0,'Hello Word')

# 将列表数据写入一个单元格
test_list = [str(i) for i in range(5)]
work_sheet.write_rich_text(1,0,test_list)

# 合并单元格
work_sheet.merge(2,3,0,3)

# 合并单元格并写入
work_sheet.write_merge(4,4,0,3,'合并单元格数据')

# 插入位图
work_sheet.insert_bitmap('01.bmp',5,0)
work_sheet.insert_bitmap('01.bmp',5,8,x=50,y=50,scale_x=0.5,scale_y=0.5)

# 保存文件
work_book.save('Test.xls')

也简单的介绍了表内单元格的一些简单操作,如:插入数据,合并单元格,插入位图等。

# 导入模块
import xlwt

# 新建工作簿
work_book = xlwt.Workbook()

# 增加sheet表
work_sheet = work_book.add_sheet('Test')

# 单元格操作
work_sheet.write(0,0,'Hello Word')

# 将列表数据写入一个单元格
test_list = [str(i) for i in range(5)]
work_sheet.write_rich_text(1,0,test_list)

# 合并单元格
work_sheet.merge(2,3,0,3)

# 合并单元格并写入
work_sheet.write_merge(4,4,0,3,'合并单元格数据')

# 插入位图
work_sheet.insert_bitmap('01.bmp',5,0)
work_sheet.insert_bitmap('01.bmp',5,8,x=50,y=50,scale_x=0.5,scale_y=0.5)

# 保存文件
work_book.save('Test.xls')

文章二:xlwt 工作表对象常用设置

文章链接:冻结窗口、设置加密保护、打印设置等

该文章主要内容有:

  1. 设置冻结窗口;
  2. 表格的常用显示设置;
  3. 设置文档保护及密码;
  4. 表格打印设置详解。

部分内容摘抄:

设置冻结窗口:

# 导入模块
import xlwt

work_book = xlwt.Workbook()
work_sheet = work_book.add_sheet('Test')
w2 = work_book.add_sheet('T2')

z = [[r,c] for r in range(20) for c in range(20)]
[l.append(str(i)) for i,l in enumerate(z)]
for info in z:
    work_sheet.write(info[0],info[1],info[2])
    w2.write(info[0],info[1],info[2])

# 设置冻结窗口
# 设置冻结为真
work_sheet.set_panes_frozen('1')
# 水平冻结
work_sheet.set_horz_split_pos(2)
# 垂直冻结
work_sheet.set_vert_split_pos(1)

# 保存文件
work_book.save('Test2.xls')

打印区域设置效果预览:

在这里插入图片描述

文章三:xlwt 设置表内单元格格式

文章链接:单元格格式、字体格式、对齐方式、边框及填充等

该文章主要内容有:

  1. 单元格数据类型;
  2. 字体设置;
  3. 对齐方式;
  4. 边框设置;
  5. 填充设置;
  6. 单元格保护。

部分内容摘抄:

字体设置:

# 导入模块
import xlwt

work_book = xlwt.Workbook()
work_sheet = work_book.add_sheet('Test')
w2 = work_book.add_sheet('T2')
# 创建数据
z = [[r,c] for r in range(20) for c in range(20)]
[l.append(str(i)) for i,l in enumerate(z)]

# 建立样式
my_style_1 = xlwt.XFStyle()
# 建立单元格数据类型,数值类型,默认为:'General'
my_style_1.num_format_str = '0'

# 建立字体
font = my_style_1.font

# 设置字体名称
font.name = 'Times New Roman '
# 设置字体高度
font.height = 400
# 设置斜体
font.italic = True
# 设置删除线
font.struck_out = True
# 设置轮廓
font.outline = True
# 设置阴影
font.shadow = True
# 设置字体颜色、蓝色
font.colour_index = 0x0C
# 设置加粗
font.bold = True
# 设置字体上下标、上标
# font.escapement = 1
# 设置下划线、双层下划线
font.underline = 2
# 设置字符集、GBK
font.charset = 0x86

# 写入数据、Test sheet对象以自定义格式写入,T2 sheet对象以默认格式写入
for info in z:
    # 写入数据,并对单元格设置格式
    work_sheet.write(info[0],info[1],info[2],my_style_1)
    w2.write(info[0],info[1],info[2])
    
# 保存文件
work_book.save('Test3.xls')

效果预览:

在这里插入图片描述

文章四:xlwt 自写方法,实现按行写入多组数据功能

文章链接:按行按列写入、自定义格式方法、自动调整列宽等

该文章主要内容为:

以面向对象的思想,以 xlwt 模块为基础,创建新类。实现:

  1. 按行写入、按列写入多组数据;
  2. 创建格式方法;
  3. 设置行高列宽方法;
  4. 根据单元格内容调整行高列宽方法。

部分内容摘抄:

按行写入方法:

class My_xlwt(object):
    def __init__(self,sheet_name = 'sheet_1',re_write = True):
        '''
        自定义类说明:
        :param sheet_name:默认sheet表对象名称,默认值为 'sheet_1'
        :param re_write: 单元格重写写功能默认开启
        '''
        self.work_book = xlwt.Workbook()
        self.sheet = self.work_book.add_sheet(sheet_name,
                                cell_overwrite_ok=re_write)
        self.col_data = {}
    
    def write(self,row,col,label,style = Style.default_style):
        '''
        在默认sheet表对象一个单元格内写入数据
        :param row: 写入行
        :param col: 写入列
        :param label: 写入数据
        '''
        self.sheet.write(row,col,label,style)
        
        # 将列数据加入到col_data字典中
        if col not in self.col_data.keys():
            self.col_data[col] = []
            self.col_data[col].append(label)
        else:
            self.col_data[col].append(label)
	
    def write_row(self,start_row,start_col,date_list,
                  style = Style.default_style):
        '''
        按行写入一行数据
        :param start_row:写入行序号
        :param start_col: 写入列序号
        :param date_list: 写入数据:列表
        :return: 返回行对象
        '''
        for col,label in enumerate(date_list):
            self.write(start_row,start_col+col,label,style)

        return self.sheet.row(start_row)

    def write_rows(self,start_row,start_col,data_lists,
                   style = Style.default_style):
        '''
        按行写入多组数据
        :param start_row: 开始写入行序号
        :param start_col: 写入列序号
        :param data_lists: 列表嵌套列表数据
        :return: 返回写入行对象列表
        '''
        row_obj = []
        for row_,data in enumerate(data_lists):
            if isinstance(data,list):
                self.write_row(start_row+row_,start_col,data,style)
                row_obj.append(self.sheet.row(start_row+row_))
            else:
                msg = '数据列表不是嵌套列表数据,而是%s' % type(data)
                raise Exception(msg)

        return row_obj

	def save(self,file_name):
        self.work_book.save(file_name)

测试:

if __name__ == '__main__':
    # 实例化自写类
    test = My_xlwt()
    h_s = test.diy_style('Times New Roman',20)
    s2 = test.diy_style('Times New Roman',10,False,1)

    l1 = list(range(10))
    l2 = ['数据%s'% i for i in range(10)]
    # 在0行0列写入一行数据
    test.write_row(0,0,l1)
    # 在1行1列写入一行数据
    test.write_row(1,1,l2)
    # 保存文件
    test.save('my_test.xls')

测试预览:

在这里插入图片描述

文章五:xlrd 读取 Excel 表格数据方法

文章链接:按行、按列读取Excel数据内容

该文章主要内容为:

  1. 获取工作簿、sheet表对象;
  2. 获取sheet表中行对象,列对象;
  3. 获取sheet表中所有数据;
  4. 获取工作簿对象所有sheet表数据。

部分内容摘抄:

按行读取Excel文件数据:

# 导入模块
import xlrd

# 打开文件方式1:
work_book = xlrd.open_workbook('test01.xls')
# 方式2:
w2 = xlrd.book.open_workbook_xls('表02.xls')

# 获取工作簿中所有sheet表对象
sheets = work_book.sheets()
print(sheets)

sheet_1 = work_book.sheet_by_index(0)

# 按行读取
data_row = []
for row in range(sheet_1.nrows):
    data_row.append(sheet_1.row_values(row))

print(data_row)
# ------运行结果------
# [['日期', '访问量'], [43974.0, 17.0], [43975.0, 36.0],
# [43976.0, 22.0], [43977.0, 20.0], [43978.0, 18.0],
# [43979.0, 223.0], [43980.0, 1187.0], [43981.0, 854.0],
# [43982.0, 119.0], [43983.0, 164.0], [43984.0, 123.0],
# [43985.0, 32.0], [43986.0, 336.0], [43987.0, 277.0],
# [43988.0, 14.0], [43989.0, 57.0], [43990.0, 18.0],
# [43991.0, 12.0], [43992.0, 67.0], [43993.0, 532.0],
# [43994.0, 1120.0], [43995.0, 621.0], [43996.0, 53.0],
# [43997.0, 22.0], [43998.0, 51.0], [43999.0, 511.0],
# [44000.0, 774.0], [44001.0, 850.0]]
# ------运行结果------

文章六:xlrd 获取Excel表格内格式信息

文章链接:获取单元格内超链接信息、格式信息、字体格式信息等

该文章主要内容为:

  1. 获取单元格内超文本信息、合并单元格信息等;
  2. 获取单元格格式信息;
  3. 获取字体格式信息;
  4. 获取行、列格式信息。

部分内容摘抄:

获取单元格内超文本信息:

# 导入模块
import xlrd

# 获取工作簿对象
work_book = xlrd.open_workbook('test02.xls',formatting_info = True)
# 按索引获取sheet对象
sheet_1 = work_book.sheet_by_index(0)
# 获取sheet表内超链接文本对象
print(sheet_1.hyperlink_list)
# ------运行结果------
# [<xlrd.sheet.Hyperlink object at 0x0000019B5A064358>]
# ------运行结果------

# 获取sheet表内超链接对象单元格位置、对象
print(sheet_1.hyperlink_map)
# ------运行结果------
# {(11, 2): <xlrd.sheet.Hyperlink object at 0x000001E5824B4EF0>}
# ------运行结果------

# 获取超链接文件url信息
hyperlink_obj = sheet_1.hyperlink_list[0]
print(hyperlink_obj.url_or_path)
# ------运行结果------
# https://www.sogou.com/
# ------运行结果------

一种简单的按行读取sheet表内所有数据方法:

# 简单按行获取sheet表对象所有值
print(sheet_1._cell_values)
# ------运行结果------
# [['', '', '', '', '', ''], ['', 'CSDN 博客数据', '', '', '', ''], 
# ['', '日期', '访问量', '评论数', '收藏数', '粉丝数'], ['', 43974.0, 17.0, 0.0, 0.0, 0.0], 
# ['', 43975.0, 36.0, 0.0, 0.0, 0.0], ['', 43976.0, 22.0, 0.0, 0.0, 0.0], 
# ['', 43977.0, 20.0, 0.0, 0.0, 0.0], ['', 43978.0, 18.0, 0.0, 0.0, 0.0], 
# ['', 43979.0, 223.0, 0.0, 0.0, 0.0], ['', 43980.0, 1187.0, 0.0, 0.0, 0.0], 
# ['', 43981.0, 854.0, 0.0, 0.0, 1.0], ['', '总计:', 2377.0, 0.0, 0.0, 1.0], 
# ['', '数据来源:', 'https://www.sogou.com/', '', '', '']]
# ------运行结果------

获取单元格背景颜色格式信息:

background = cell_xf.background
# 有三个属性:fill_pattern,background_colour_index,pattern_colour_index
print(background.fill_pattern,
      ',',background.background_colour_index,
      ',',background.pattern_colour_index)
# ------运行结果------
# 1 , 64 , 13
# ------运行结果------

文章七:实例(一)给表格增加序号,根据表格已有内容增加索引

文章链接:给表格增加序号,根据表格已有内容增加索引

该文章主要内容为: 对已有的Excel表格增加序号,根据已有数据内容增加索引。

部分内容摘抄:

import xlrd
import xlwt

# 读取表格内容,按行读取
# 打开需读取的Excel文件
read_work = xlrd.open_workbook('sample.xls')
# 获取sheet对象
read_sheet = read_work.sheet_by_index(0)
# 按行读取sheet表全部数据
read_data = read_sheet._cell_values

# 创建自定义FID列数据
def create_fid(data):
    for i,ds in enumerate(data):
        if i >= 999:
            ds[0] = 'KH' + str(i+1)
        elif 99 <= i < 999:
            ds[0] = 'KH0' + str(i+1)
        elif 9 <= i < 99:
            ds[0] = 'KH00' + str(i+1)
        else:
            ds[0] = 'KH000' + str(i+1)

    return data

new_data = create_fid(read_data[1:])
new_data.insert(0,read_data[0])

# 将新建数据写入Excel表格
# 创建新的Excel表
new_work = xlwt.Workbook()
# 创建新的sheet表
new_sheet = new_work.add_sheet('Sheet1')
# 按行写入数据,按行写入
for row,ds in enumerate(new_data):
    for col,d in enumerate(ds):
        new_sheet.write(row,col,d)
# 保存文件
new_work.save('new_sample.xls')

文件预览:

在这里插入图片描述

文章八:实例(二)多表整合、数据汇总及统计

文章链接:处理校运会报名 Excel 表格,多表整合、数据汇总及统计

该文章主要内容:

假设:需完成一份大学校运会的报名工作,将已做好报名表下发到各个报名单位。他们按格式填好报名表、上交,最后由你负责信息汇总和统计。

全部代码在文章中已分享,此处不再贴代码!

单个报名表截图:
在这里插入图片描述处理后文件截图:
在这里插入图片描述

文章九:实例(三)分析2020年江苏省事业单位招聘岗位信息

文章链接:统计、分析2020年江苏省事业单位招聘岗位 Excel 表格

该文章主要内容为:

  1. 对2020年江苏省发布的事业单位招聘信息 Excel 表进行分析,主要分析内容有: 数据读取:获取表格数据,并对数据进行整理;
  2. 基础统计:A: 总招聘岗位数,总招聘人数,岗位最大、最小招聘人数;B: 岗位招聘人数分布情况:即招聘人数为1、2…的单位个数;C:招聘对象为社会人员、应届毕业生、不限的各自数量,及所占比例。
  3. 按条件查找分析数据:A:专业为计算机相关专业,招聘对象为应届毕业生的所有招聘信息;B:统计条件下招聘的岗位数,招聘人数,及两者在全部招聘信息中所占比例;C: 统计条件下学历要求情况:中专,大专,本科,硕士,博士 招聘岗位数,招聘人数、占比。
  4. 综合分析:A:统计各主管部门招聘人数,占总招聘人数比例;B: 分析最大、最小招聘人数的部门是哪个;C: 分析每个主管部门招聘对象为:社会人员、应届毕业生、不限 的人数,及其内部比例。
  5. 保存数据: 将上面分析数据写入新建的Excel表格,方便阅读。

基础分析报表截图:
在这里插入图片描述
综合分析报表截图:
在这里插入图片描述

文章十:实例(四)对表格内数据进行去重、分类,异常处理及分析

文章链接:对 Excel 表格内数据进行去重、分类,异常处理及分析

该文章主要内容为: 对一份有很多数据的 Excel 表格,进行数据去重,分类,对有异常的数据进行处理和分析。

原示例数据截图:
在这里插入图片描述
异常标记效果图:
在这里插入图片描述

按分类三分类计算的商场价与店铺价差价最大的标记效果图:

在这里插入图片描述

Python 与 word

本专栏介绍的 Python 操作 Word 文档模块为 docx 模块。

文章十一:docx 创建 Word文档基础

文章链接:创建文档、段落格式、字体格式设置方法

该文章主要内容为:

  1. 创建文档与基础操作;
  2. 文档段落格式设置;
  3. 字体格式设置。

部分内容摘抄:

创建 Word 文档及基础用法

# 导入模块
from docx import Document

doc = Document()  # 新建文档对象
'''按模板新建 word 文档文件,具有模板文件的所有格式'''
# 增加标题:
doc.add_heading('标题',1)

# 段落正文
par = doc.add_paragraph('第一个段落:')

# 在段落中添加文字
run_ = par.add_run('段落文字')

# 增加图片
pic_par = doc.add_picture('1.png')

# 增加表格
table = doc.add_table(2,3)

# 保存文件
doc.save('test.docx')

文件预览:
在这里插入图片描述

文章十二:docx 设置页面大小,字体格式等

文章链接:插入图片、表格,设置表格样式,章节,页眉页脚等

该文章主要内容有:

  1. 插入图片、设置图片大小;
  2. 插入表格、设置表格样式、字体样式;
  3. 章节设置:页面大小、边距等;
  4. 设置页眉页脚。

部分内容摘抄:

# 导入模块
from docx import Document
# 此模块中包含 docx 中各类单位方法
from docx import shared

doc = Document()
doc.add_heading('python-docx 基础讲解(二)')

# 在文档中增加表格,并添加文字
table1 = doc.add_table(2,3) # 添加一个2行3列的表格,表格样式为None
"add_table(self, rows, cols, style=None):"
table1.cell(0,0).text = '0'  # 给表格单元格赋值

# 对单元格对象设置文字
for i,cell in enumerate(table1._cells):
    cell.text = str(i)

# 为表格设置统一样式:
table1.style = 'Table Grid'

# 保存文件
doc.save('test2.docx')

表格截图:
在这里插入图片描述设置表格内单元格格式:

cell_par = cell_new.paragraphs[0] # 获取到对象
# 设置对齐方式
from docx.enum.text import WD_ALIGN_PARAGRAPH
cell_par.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 获取 run 对象
cell_run = cell_new.paragraphs[0].runs[0]
# 设置字体
cell_run.font.name = 'Times New Roman'
from docx.oxml.ns import qn
cell_run.font.element.rPr.rFonts.set(qn('w:eastAsia'),'楷体')
# 设置字体颜色
from docx.shared import RGBColor
cell_run.font.color.rgb = RGBColor(255,55,55) # 红色

表格截图:
在这里插入图片描述

文章十三:docx 读取Word文档信息

文章链接:读取正文、表格文本信息、段落格式、字体格式等

该文章主要内容有:

  1. 获取文档的章节信息;
  2. 获取段落文本信息;
  3. 获取表格内文本信息;
  4. 获取文档内格式信息。

部分内容摘抄:

获取已存在的Word文档并读取信息:

from docx import Document

# Document 类,不仅可以新建word文档,也可以打开一个本地文档
doc = Document('test03.docx')  # 想获取的文档文件名,这里是相对路径。

"获取文档所有段落信息:"
# 获取文档所有段落对象
paragraphs = doc.paragraphs
print(paragraphs)
print(len(paragraphs))  # 打印结果:20

# 获取一个段落对象的文字信息
par0 = paragraphs[0]
print(par0)
par0_string = par0.text
print(par0_string)

# 获取所有段落文字信息
pars_string = [par.text for par in paragraphs]
print(pars_string)

par0_string 打印截图:

在这里插入图片描述

文章十四:实例(五)批量生成 Word 文档

文章链接:实现批量生成 Word 文档:市民水电费缴费通知单

该文章主要内容: 对已有的 Word 模板文档和数据进行修改,按需求生成多个文档。

文档模板截图:
在这里插入图片描述

数据截图:

在这里插入图片描述

生成的Word文件:

在这里插入图片描述
具体内容截图:
在这里插入图片描述

结尾:

以上就是本专栏的全部文章目录,文章内摘抄内容可能因代码不全而会有运行问题,具体代码还请移步文章内查看。

感兴趣的朋友,可以点个 关注 或 收藏 。如在博客中遇到任何问题或有一些想法、需求,可留言或私信。

创作不易,你的支持是我最大的动力,感谢 !

猜你喜欢

转载自blog.csdn.net/zhouz92/article/details/107400390