欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-12 12:32:54
Python 与 Office 办公软件专栏目录前言:Python 与 Excel文章一:用 xlwt 将数据写入Excel文件简介文章二:xlwt 工作表对象常用设置文章三:xlwt 设置表内单元格格式文章四:xlwt 自写方法,实现按行写入多组数据功能文章五:xlrd 读取 Excel 表格数据方法文章六:xlrd 获取Excel表格内格式信息文章七:实例(一)给表格增加序号,根据表格已有内容增加索引文章八:实例(二)多表整合、数据汇总及统计文章九:实例(三)分析2020年江苏省事业单位招聘岗位信息文章...

前言:

本篇博客为【 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')

打印区域设置效果预览:

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

文章三: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')

效果预览:

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

文章四: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')

测试预览:

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

文章五: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')

文件预览:

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

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

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

该文章主要内容:

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

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

单个报名表截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦处理后文件截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦

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

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

该文章主要内容为:

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

基础分析报表截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦
综合分析报表截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦

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

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

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

原示例数据截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦
异常标记效果图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦

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

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

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')

文件预览:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦

文章十二: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')

表格截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦设置表格内单元格格式:

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) # 红色

表格截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦

文章十三: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 打印截图:

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

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

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

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

文档模板截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦

数据截图:

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

生成的Word文件:

Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦
具体内容截图:
Python 与 Office 办公软件专栏目录:从基础到实例,助力你的自动化办公梦

结尾:

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

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

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

本文地址:https://blog.csdn.net/zhouz92/article/details/107400390