-
2021-01-06 13:43:03
使用VBA代码,自定义页面数拆分大Word文件为多个小文档并指定名称保存
alt+F11打开开发选项-->选择【插入】-->【模块】-->弹出代码编辑窗口,插入下面代码,按照需要修改页数和要重命名的每个文档按顺序的名字--->按F5运行代码,文档最后就生成在当前目录下了
在word的某些版本上可能出现格式不对,最后测试在最新的wps上跑效果最好
Option Explicit Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub SplitEveryFivePagesAsDocuments() On Error GoTo Errorhandler Dim oSrcDoc As Document, oNewDoc As Document Dim nameArray As Variant Dim strSrcName As String, strNewName As String Dim oRange As Range Dim nIndex As Integer, nSubIndex As Integer, nTotalPages As Integer, nBound As Integer Dim fso As Object Const nSteps = 4 '设置多少页分割一次 nameArray = Array("Cat", "Dog", "Rabbit") '数组内容修改为需要的命名 Set fso = CreateObject("Scripting.FileSystemObject") Set oSrcDoc = ActiveDocument Set oRange = oSrcDoc.Content nTotalPages =Val(ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)) oRange.Collapse wdCollapseStart oRange.Select For nIndex = 1 To nTotalPages Step nSteps If nIndex + nSteps > nTotalPages Then nBound = nTotalPages Else nBound = nIndex + nSteps - 1 End If Set oNewDoc = Documents.Add For nSubIndex = nIndex To nBound oSrcDoc.Activate oSrcDoc.Bookmarks("\page").Range.Copy oSrcDoc.Windows(1).Activate Application.Browser.Target = wdBrowsePage Application.Browser.Next Sleep 10 oNewDoc.Activate oNewDoc.Windows(1).Selection.Paste Errorhandler: If Err = 4605 Then oNewDoc.Windows(1).Selection.Paste Else Resume Next End If MsgBox "nSubIndex" & "_" & nSubIndex Next nSubIndex strSrcName = oSrcDoc.FullName strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _ fso.GetBaseName(strSrcName) & "_" & nameArray(nIndex\nSteps) & "." & fso.GetExtensionName(strSrcName)) oNewDoc.SaveAs strNewName oNewDoc.Close False MsgBox nameArray(nIndex\nSteps) Next nIndex Set oNewDoc = Nothing Set oRange = Nothing Set oSrcDoc = Nothing Set fso = Nothing MsgBox "结束!" End Sub
更多相关内容 -
python自动化办公——python操作Excel、Word、PDF集合大全
2020-05-10 09:15:17① 加密pdf ② 解密pdf并保存为未加密的pdf 章节三:python使用python-docx操作word 1、python-docx库介绍 2、Python读取Word文档内容 1)...本文是鉴于有些粉丝的工作需求,有时候需要遇到这些文件的处理。因此,我写了一个文章集合,供大家参考,整篇文章已经整理成册(如下图所示)。由于文档获取人数太多,大家如有需求,请关注公众号:【数据分析与统计学之美】,回复关键词:【自动化文档】!
目录
章节一:python使用openpyxl操作excel
1、openpyxl库介绍
2、python怎么打开及读取表格内容?
1)Excel表格述语
2)打开Excel表格并获取表格名称
3)通过sheet名称获取表格
4)获取表格的尺寸大小
5)获取表格内某个格子的数据
① sheet[“A1”]方式
② sheet.cell(row=, column=)方式
6)获取某个格子的行数、列数、坐标
7)获取一系列格子
① sheet[]方式
② .iter_rows()方式
③ sheet.rows()
3、python如何向excel中写入某些内容?
1)修改表格中的内容
① 向某个格子中写入内容并保存
② .append():向表格中插入行数据
③ 在python中使用excel函数公式(很有用)
④ .insert_cols()和.insert_rows():插入空行和空列
⑤ .delete_rows()和.delete_cols():删除行和列
⑥ .move_range():移动格子
⑦ .create_sheet():创建新的sheet表格
⑧ .remove():删除某个sheet表
⑨ .copy_worksheet():复制一个sheet表到另外一张excel表
⑩ sheet.title:修改sheet表的名称
⑪ 创建新的excel表格文件
⑫ sheet.freeze_panes:冻结窗口
⑬ sheet.auto_filter.ref:给表格添加“筛选器”
4、批量调整字体和样式
1)修改字体样式
2)获取表格中格子的字体样式
3)设置对齐样式
4)设置边框样式
5)设置填充样式
6)设置行高和列宽
7)合并单元格
章节二:python使用PyPDF2和pdfplumber操作pdf
1、PyPDF2和pdfplumber库介绍
2、python提取PDF文字内容
1)利用pdfplumber提取文字
2)利用pdfplumber提取表格并写入excel
3、PDF合并及页面的排序和旋转
1)分割及合并pdf
① 合并pdf
② 拆分pdf
2)旋转及排序pdf
① 旋转pdf
② 排序pdf
4、pdf批量加水印及加密、解密
1)批量加水印
2)批量加密、解密
① 加密pdf
② 解密pdf并保存为未加密的pdf
章节三:python使用python-docx操作word
1、python-docx库介绍
2、Python读取Word文档内容
1)word文档结构介绍
2)python-docx提取文字和文字块儿
① python-docx提取文字
② python-docx提取文字块儿
3)利用Python向Word文档写入内容
① 添加段落
② 添加文字块儿
③ 添加一个分页
④ 添加图片
⑤ 添加表格
⑥ 提取word表格,并保存在excel中(很重要)
3、利用Python调整Word文档样式
1)修改文字字体样式
2)修改段落样式
① 对齐样式
② 行间距调整
③ 段前与段后间距章节一:python使用openpyxl操作excel
1、openpyxl库介绍
- openpyxl最好用的python操作excel表格库,不接受反驳;
- openpyxl官网链接:openpyxl官网
- openpyxl只支持【.xlsx / .xlsm / .xltx / .xltm】格式的文件;
2、python怎么打开及读取表格内容?
1)Excel表格述语
这里需要大家仔细查看图中的每一项内容,知道什么是“行(row)、列(column)”?什么是“格子(cell)”?什么是“sheet表”?
2)打开Excel表格并获取表格名称
from openpyxl import load_workbook workbook = load_workbook(filename = "test.xlsx") workbook.sheetnames
结果如下:
3)通过sheet名称获取表格
from openpyxl import load_workbook workbook = load_workbook(filename = "test.xlsx") workbook.sheetnames sheet = workbook["Sheet1"] print(sheet)
结果如下:
4)获取表格的尺寸大小
- 这里所说的尺寸大小,指的是excel表格中的数据有几行几列,针对的是不同的sheet而言。
sheet.dimensions
结果如下:
5)获取表格内某个格子的数据
① sheet[“A1”]方式
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) cell1 = sheet["A1"] cell2 = sheet["C11"] print(cell1.value, cell2.value) """ workbook.active 打开激活的表格; sheet["A1"] 获取A1格子的数据; cell.value 获取格子中的值; """
结果如下:
② sheet.cell(row=, column=)方式
- 这种方式更简单,大家可以对比这两种方式;
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) cell1 = sheet.cell(row = 1,column = 1) cell2 = sheet.cell(row = 11,column = 3) print(cell1.value, cell2.value)
结果如下:
6)获取某个格子的行数、列数、坐标
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) cell1 = sheet["A1"] cell2 = sheet["C11"] print(cell1.value, cell1.row, cell1.column, cell1.coordinate) print(cell2.value, cell2.row, cell2.column, cell2.coordinate) """ .row 获取某个格子的行数; .columns 获取某个格子的列数; .corordinate 获取某个格子的坐标; """
结果如下:
7)获取一系列格子
① sheet[]方式
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) # 获取A1:C2区域的值 cell = sheet["A1:C2"] print(cell) for i in cell: for j in i: print(j.value)
结果如下:
特别的:如果我们只想获取“A列”,或者获取“A-C列”,可以采取如下方式:sheet["A"] --- 获取A列的数据 sheet["A:C"] --- 获取A,B,C三列的数据 sheet[5] --- 只获取第5行的数据
② .iter_rows()方式
- 当然有.iter_rows()方式,肯定也会有.iter_cols()方式,只不过一个是按行读取,一个是按列读取。
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) # 按行获取值 for i in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=2): for j in i: print(j.value) # 按列获取值 for i in sheet.iter_cols(min_row=2, max_row=5, min_col=1, max_col=2): for j in i: print(j.value)
结果如下:
③ sheet.rows()
- 帮助我们获取所有行
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) for i in sheet.rows: print(i)
结果如下:
3、python如何向excel中写入某些内容?
1)修改表格中的内容
① 向某个格子中写入内容并保存
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) sheet["A1"] = "哈喽" # 这句代码也可以改为cell = sheet["A1"] cell.value = "哈喽" workbook.save(filename = "哈喽.xlsx") """ 注意:我们将“A1”单元格的数据改为了“哈喽”,并另存为了“哈喽.xlsx”文件。 如果我们保存的时候,不修改表名,相当于直接修改源文件; """
结果如下:
② .append():向表格中插入行数据
- .append()方式:会在表格已有的数据后面,增添这些数(按行插入);
- 这个操作很有用,爬虫得到的数据,可以使用该方式保存成Excel文件;
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) data = [ ["唐僧","男","180cm"], ["孙悟空","男","188cm"], ["猪八戒","男","175cm"], ["沙僧","男","176cm"], ] for row in data: sheet.append(row) workbook.save(filename = "test.xlsx")
结果如下:
③ 在python中使用excel函数公式(很有用)
# 这是我们在excel中输入的公式 =IF(RIGHT(C2,2)="cm",C2,SUBSTITUTE(C2,"m","")*100&"cm") # 那么,在python中怎么插入excel公式呢? workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) sheet["D1"] = "标准身高" for i in range(2,16): sheet["D{}".format(i)] = '=IF(RIGHT(C{},2)="cm",C{},SUBSTITUTE(C{},"m","")*100&"cm")'.format(i,i,i) workbook.save(filename = "test.xlsx")
结果如下:
此时,你肯定会好奇,python究竟支持写哪些“excel函数公式”呢?我们可以使用如下操作查看一下。import openpyxl from openpyxl.utils import FORMULAE print(FORMULAE)
结果如下:
④ .insert_cols()和.insert_rows():插入空行和空列
- .insert_cols(idx=数字编号, amount=要插入的列数),插入的位置是在idx列数的左侧插入;
- .insert_rows(idx=数字编号, amount=要插入的行数),插入的行数是在idx行数的下方插入;
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) sheet.insert_cols(idx=4,amount=2) sheet.insert_rows(idx=5,amount=4) workbook.save(filename = "test.xlsx")
结果如下:
⑤ .delete_rows()和.delete_cols():删除行和列
- .delete_rows(idx=数字编号, amount=要删除的行数)
- .delete_cols(idx=数字编号, amount=要删除的列数)
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) # 删除第一列,第一行 sheet.delete_cols(idx=1) sheet.delete_rows(idx=1) workbook.save(filename = "test.xlsx")
结果如下:
⑥ .move_range():移动格子
- .move_range(“数据区域”,rows=,cols=):正整数为向下或向右、负整数为向左或向上;
# 向左移动两列,向下移动两行 sheet.move_range("C1:D4",rows=2,cols=-1)
演示效果如下:
⑦ .create_sheet():创建新的sheet表格
- .create_sheet(“新的sheet名”):创建一个新的sheet表;
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) workbook.create_sheet("我是一个新的sheet") print(workbook.sheetnames) workbook.save(filename = "test.xlsx")
结果如下:
⑧ .remove():删除某个sheet表
- .remove(“sheet名”):删除某个sheet表;
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(workbook.sheetnames) # 这个相当于激活的这个sheet表,激活状态下,才可以操作; sheet = workbook['我是一个新的sheet'] print(sheet) workbook.remove(sheet) print(workbook.sheetnames) workbook.save(filename = "test.xlsx")
结果如下:
⑨ .copy_worksheet():复制一个sheet表到另外一张excel表
- 这个操作的实质,就是复制某个excel表中的sheet表,然后将文件存储到另外一张excel表中;
workbook = load_workbook(filename = "a.xlsx") sheet = workbook.active print("a.xlsx中有这几个sheet表",workbook.sheetnames) sheet = workbook['姓名'] workbook.copy_worksheet(sheet) workbook.save(filename = "test.xlsx")
结果如下:
⑩ sheet.title:修改sheet表的名称
- .title = “新的sheet表名”
workbook = load_workbook(filename = "a.xlsx") sheet = workbook.active print(sheet) sheet.title = "我是修改后的sheet名" print(sheet)
结果如下:
⑪ 创建新的excel表格文件
from openpyxl import Workbook workbook = Workbook() sheet = workbook.active sheet.title = "表格1" workbook.save(filename = "新建的excel表格")
结果如下:
⑫ sheet.freeze_panes:冻结窗口
- .freeze_panes = “单元格”
workbook = load_workbook(filename = "花园.xlsx") sheet = workbook.active print(sheet) sheet.freeze_panes = "C3" workbook.save(filename = "花园.xlsx") """ 冻结窗口以后,你可以打开源文件,进行检验; """
结果如下:
⑬ sheet.auto_filter.ref:给表格添加“筛选器”
- .auto_filter.ref = sheet.dimension 给所有字段添加筛选器;
- .auto_filter.ref = “A1” 给A1这个格子添加“筛选器”,就是给第一列添加“筛选器”;
workbook = load_workbook(filename = "花园.xlsx") sheet = workbook.active print(sheet) sheet.auto_filter.ref = sheet["A1"] workbook.save(filename = "花园.xlsx")
结果如下:
4、批量调整字体和样式
1)修改字体样式
- Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)
from openpyxl.styles import Font from openpyxl import load_workbook workbook = load_workbook(filename="花园.xlsx") sheet = workbook.active cell = sheet["A1"] font = Font(name="微软雅黑",size=20,bold=True,italic=True,color="FF0000") cell.font = font workbook.save(filename = "花园.xlsx") """ 这个color是RGB的16进制表示,自己下去百度学习; """
结果如下:
2)获取表格中格子的字体样式
from openpyxl.styles import Font from openpyxl import load_workbook workbook = load_workbook(filename="花园.xlsx") sheet = workbook.active cell = sheet["A2"] font = cell.font print(font.name, font.size, font.bold, font.italic, font.color)
结果如下:
3)设置对齐样式
- Alignment(horizontal=水平对齐模式,vertical=垂直对齐模式,text_rotation=旋转角度,wrap_text=是否自动换行)
- 水平对齐:‘distributed’,‘justify’,‘center’,‘leftfill’, ‘centerContinuous’,‘right,‘general’;
- 垂直对齐:‘bottom’,‘distributed’,‘justify’,‘center’,‘top’;
from openpyxl.styles import Alignment from openpyxl import load_workbook workbook = load_workbook(filename="花园.xlsx") sheet = workbook.active cell = sheet["A1"] alignment = Alignment(horizontal="center",vertical="center",text_rotation=45,wrap_text=True) cell.alignment = alignment workbook.save(filename = "花园.xlsx")
结果如下:
4)设置边框样式
- Side(style=边线样式,color=边线颜色)
- Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)
- style参数的种类: 'double, ‘mediumDashDotDot’, ‘slantDashDot’,‘dashDotDot’,‘dotted’,‘hair’, 'mediumDashed, ‘dashed’, ‘dashDot’, ‘thin’,‘mediumDashDot’,‘medium’, 'thick’from openpyxl.styles import Side,Borderfrom
openpyxl import load_workbook workbook = load_workbook(filename="花园.xlsx") sheet = workbook.active cell = sheet["D6"] side1 = Side(style="thin",color="FF0000") side2 = Side(style="thick",color="FFFF0000") border = Border(left=side1,right=side1,top=side2,bottom=side2) cell.border = border workbook.save(filename = "花园.xlsx")
结果如下:
5)设置填充样式
- PatternFill(fill_type=填充样式,fgColor=填充颜色)
- GradientFill(stop=(渐变颜色1,渐变颜色2……))
from openpyxl.styles import PatternFill,GradientFill from openpyxl import load_workbook workbook = load_workbook(filename="花园.xlsx") sheet = workbook.active cell_b9 = sheet["B9"] pattern_fill = PatternFill(fill_type="solid",fgColor="99ccff") cell_b9.fill = pattern_fill cell_b10 = sheet["B10"] gradient_fill = GradientFill(stop=("FFFFFF","99ccff","000000")) cell_b10.fill = gradient_fill workbook.save(filename = "花园.xlsx")
结果如下:
6)设置行高和列宽
- .row_dimensions[行编号].height = 行高
- .column_dimensions[列编号].width = 列宽
workbook = load_workbook(filename="花园.xlsx") sheet = workbook.active # 设置第1行的高度 sheet.row_dimensions[1].height = 50 # 设置B列的宽度 sheet.column_dimensions["B"].width = 20 workbook.save(filename = "花园.xlsx") """ sheet.row_dimensions.height = 50 sheet.column_dimensions.width = 30 这两句代码,是将整个表的行高设置为50,列宽设置为30; """
结果如下:
7)合并单元格
- .merge_cells(待合并的格子编号)
- .merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
workbook = load_workbook(filename="花园.xlsx") sheet = workbook.active sheet.merge_cells("C1:D2") sheet.merge_cells(start_row=7,start_column=1,end_row=8,end_column=3) workbook.save(filename = "花园.xlsx")
结果如下:
当然,也有“取消合并单元格”,用法一致。- .unmerge_cells(待合并的格子编号)
- .unmerge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
章节二:python使用PyPDF2和pdfplumber操作pdf
1、PyPDF2和pdfplumber库介绍
- PyPDF2官网: PyPDF2官网 ,可以更好的读取、写入、分割、合并PDF文件;
- pdfplumber官网:pdfplumber官网,可以更好地读取PDF文件内容和提取PDF中的表格;
- 这两个库不属于python标准库,都需要单独安装;
2、python提取PDF文字内容
1)利用pdfplumber提取文字
import PyPDF2 import pdfplumber with pdfplumber.open("餐饮企业综合分析.pdf") as p: page = p.pages[2] print(page.extract_text())
结果如下:
2)利用pdfplumber提取表格并写入excel
- extract_table():如果一页有一个表格;
- extract_tables():如果一页有多个表格;
import PyPDF2 import pdfplumber from openpyxl import Workbook with pdfplumber.open("餐饮企业综合分析.pdf") as p: page = p.pages[4] table = page.extract_table() print(table) workbook = Workbook() sheet = workbook.active for row in table: if not "".join() == "" sheet.append(row) workbook.save(filename = "新pdf.xlsx")
结果如下:
缺陷:可以看到,这里提取出来的表格有很多空行,怎么去掉这些空行呢?
判断:将列表中每个元素都连接成一个字符串,如果还是一个空字符串那么肯定就是空行。import PyPDF2 import pdfplumber from openpyxl import Workbook with pdfplumber.open("餐饮企业综合分析.pdf") as p: page = p.pages[4] table = page.extract_table() print(table) workbook = Workbook() sheet = workbook.active for row in table: if not "".join([str(i) for i in row]) == "": sheet.append(row) workbook.save(filename = "新pdf.xlsx")
结果如下:
3、PDF合并及页面的排序和旋转
1)分割及合并pdf
① 合并pdf
首先,我们有如下几个文件,可以发现这里共有三个PDF文件需要我们合并。同时可以发现他们的文件名都是有规律的(如果文件名,没有先后顺序,我们合并起来就没有意义了。)
代码如下:from PyPDF2 import PdfFileReader, PdfFileWriter pdf_writer = PdfFileWriter() for i in range(1,len(os.listdir(r"G:\6Tipdm\7python办公自动化\concat_pdf"))+1): print(i*50+1,(i+1)*50) pdf_reader = PdfFileReader("G:\\6Tipdm\\7python办公自动化\\concat_pdf\{}-{}.pdf".format(i*50+1,(i+1)*50)) for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\merge.pdf", "wb") as out: pdf_writer.write(out)
结果如下:
② 拆分pdf
这里有一个“时间序列.pdf”的文件,共3页,我们将其每一页存为一个PDF文件。
代码如下:from PyPDF2 import PdfFileReader, PdfFileWriter pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf") for page in range(pdf_reader.getNumPages()): pdf_writer = PdfFileWriter() pdf_writer.addPage(pdf_reader.getPage(page)) with open(f"G:\\6Tipdm\\7python办公自动化\\concat_pdf\\{page}.pdf", "wb") as out: pdf_writer.write(out)
结果如下:
2)旋转及排序pdf
① 旋转pdf
- .rotateClockwise(90的倍数):顺时针旋转90度
- .rotateCounterClockwise(90的倍数):逆时针旋转90度
from PyPDF2 import PdfFileReader, PdfFileWriter pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf") pdf_writer = PdfFileWriter() for page in range(pdf_reader.getNumPages()): if page % 2 == 0: rotation_page = pdf_reader.getPage(page).rotateCounterClockwise(90) else: rotation_page = pdf_reader.getPage(page).rotateClockwise(90) pdf_writer.addPage(rotation_page) with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\旋转.pdf", "wb") as out: pdf_writer.write(out) """ 上述代码中,我们循环遍历了这个pdf,对于偶数页我们逆时针旋转90°,对于奇数页我们顺时针旋转90°; 注意:旋转的角度只能是90的倍数; """
其中一页效果展示如下:
② 排序pdf
需求:我们有一个PDF文件,我们需要倒序排列,应该怎么做呢?
首先,我们来看python中,怎么倒叙打印一串数字,如下图所示。
那么倒序排列一个pdf,思路同上,代码如下:from PyPDF2 import PdfFileReader, PdfFileWriter pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf") pdf_writer = PdfFileWriter() for page in range(pdf_reader.getNumPages()-1, -1, -1): pdf_writer.addPage(pdf_reader.getPage(page)) with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\倒序.pdf", "wb") as out: pdf_writer.write(out)
结果如下:
4、pdf批量加水印及加密、解密
1)批量加水印
from PyPDF2 import PdfFileReader, PdfFileWriter from copy import copy water = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\水印.pdf") water_page = water.getPage(0) pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\aa.pdf") pdf_writer = PdfFileWriter() for page in range(pdf_reader.getNumPages()): my_page = pdf_reader.getPage(page) new_page = copy(water_page) new_page.mergePage(my_page) pdf_writer.addPage(new_page) with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\添加水印后的aa.pdf", "wb") as out: pdf_writer.write(out) """ 这里有一点需要注意:进行pdf合并的时候,我们希望“水印”在下面,文字在上面,因此是“水印”.mergePage(“图片页”) """
结果如下:
2)批量加密、解密
- 这里所说的“解密”,是在知道pdf的密码下,去打开pdf,而不是暴力破解;
① 加密pdf
from PyPDF2 import PdfFileReader, PdfFileWriter pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf") pdf_writer = PdfFileWriter() for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) # 添加密码 pdf_writer.encrypt("a123456") with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\时间序列.pdf", "wb") as out: pdf_writer.write(out)
结果如下:
② 解密pdf并保存为未加密的pdf
from PyPDF2 import PdfFileReader, PdfFileWriter pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf") # 解密pdf pdf_reader.decrypt("a123456") pdf_writer = PdfFileWriter() for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\未加密的时间序列.pdf", "wb") as out: pdf_writer.write(out)
结果如下:
章节三:python使用python-docx操作word
1、python-docx库介绍
- 该模块儿可以创建、修改Word(.docx)文件;
- 此模块儿不属于python标准库,需要单独安装;
- python-docx使用官网: python-docx官网
- 我们在安装此模块儿使用的是pip install python-docx,但是在导入的时候是import docx;
2、Python读取Word文档内容
- 注意:每进行一个操作,必须保存一下,否则等于白做;
1)word文档结构介绍
2)python-docx提取文字和文字块儿
① python-docx提取文字
有一个这样的docx文件,我们想要提取其中的文字,应该怎么做?
代码如下:from docx import Document doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") print(doc.paragraphs) for paragraph in doc.paragraphs: print(paragraph.text)
结果如下:
② python-docx提取文字块儿
from docx import Document doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") print(doc.paragraphs) paragraph = doc.paragraphs[0] runs = paragraph.runs print(runs) for run in paragraph.runs: print(run.text) ------------------------------ paragraph = doc.paragraphs[1] runs = paragraph.runs print(runs) for run in paragraph.runs: print(run.text)
结果如下:
3)利用Python向Word文档写入内容
① 添加段落
from docx import Document doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") # print(doc.add_heading("一级标题", level=1)) 添加一级标题的时候出错,还没有解决! paragraph1 = doc.add_paragraph("这是一个段落") paragraph2 = doc.add_paragraph("这是第二个段落") doc.save(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") """ 添加段落的时候,赋值给一个变量,方便我们后面进行格式调整; """
结果如下:
② 添加文字块儿
from docx import Document doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") # 这里相当于输入了一个空格,后面等待着文字输入 paragraph3 = doc.add_paragraph() paragraph3.add_run("我被加粗了文字块儿").bold = True paragraph3.add_run(",我是普通文字块儿,") paragraph3.add_run("我是斜体文字块儿").italic = True doc.save(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx")
结果如下:
③ 添加一个分页
from docx import Document doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") doc.add_page_break() doc.save(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx")
结果如下:
④ 添加图片
from docx import Document from docx.shared import Cm doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") doc.add_picture(r"G:\6Tipdm\7python办公自动化\concat_word\sun_wu_kong.png",width=Cm(5),height=Cm(5)) doc.save(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") """ Cm模块,用于设定图片尺寸大小 """
结果如下:
⑤ 添加表格
from docx import Document doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") list1 = [ ["姓名","性别","家庭地址"], ["唐僧","男","湖北省"], ["孙悟空","男","北京市"], ["猪八戒","男","广东省"], ["沙和尚","男","湖南省"] ] list2 = [ ["姓名","性别","家庭地址"], ["貂蝉","女","河北省"], ["杨贵妃","女","贵州省"], ["西施","女","山东省"] ] table1 = doc.add_table(rows=5,cols=3) for row in range(5): cells = table1.rows[row].cells for col in range(3): cells[col].text = str(list1[row][col]) doc.add_paragraph("-----------------------------------------------------------") table2 = doc.add_table(rows=4,cols=3) for row in range(4): cells = table2.rows[row].cells for col in range(3): cells[col].text = str(list2[row][col]) doc.save(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx")
结果如下:
⑥ 提取word表格,并保存在excel中(很重要)
from docx import Document from openpyxl import Workbook doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test2.docx") t0 = doc.tables[0] workbook = Workbook() sheet = workbook.active for i in range(len(t0.rows)): list1 = [] for j in range(len(t0.columns)): list1.append(t0.cell(i,j).text) sheet.append(list1) workbook.save(filename = r"G:\6Tipdm\7python办公自动化\concat_word\来自word中的表.xlsx")
结果如下:
3、利用Python调整Word文档样式
1)修改文字字体样式
from docx import Document from docx.shared import Pt,RGBColor from docx.oxml.ns import qn doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test2.docx") for paragraph in doc.paragraphs: for run in paragraph.runs: run.font.bold = True run.font.italic = True run.font.underline = True run.font.strike = True run.font.shadow = True run.font.size = Pt(18) run.font.color.rgb = RGBColor(255,255,0) run.font.name = "宋体" # 设置像宋体这样的中文字体,必须添加下面2行代码 r = run._element.rPr.rFonts r.set(qn("w:eastAsia"),"宋体") doc.save(r"G:\6Tipdm\7python办公自动化\concat_word\_test1.docx")
结果如下:
2)修改段落样式
① 对齐样式
from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") print(doc.paragraphs[0].text) doc.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER # 这里设置的是居中对齐 doc.save(r"G:\6Tipdm\7python办公自动化\concat_word\对齐样式.docx") """ LEFT,CENTER,RIGHT,JUSTIFY,DISTRIBUTE,JUSTIFY_MED,JUSTIFY_HI,JUSTIFY_LOW,THAI_JUSTIFY """
结果如下:
② 行间距调整
from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH doc = Document(r"G:\6Tipdm\7python办公自动化\concat_word\test1.docx") for paragraph in doc.paragraphs: paragraph.paragraph_format.line_spacing = 5.0 doc.save(r"G:\6Tipdm\7python办公自动化\concat_word\行间距.docx")
结果如下:
③ 段前与段后间距
- 这里提供代码,自行下去检验
-
Word自动排版软件
2020-12-31 01:00:16软件开启Word自动排版新时代,Word自动排版软件将为您节省海量人工!新版本发布(无需注册,默认账号直接登陆),使用Word自动排版软件您将十倍以上提升排版效率和准确性,为您节省海量时间(为企业用户提供深度定制服务...科技改变工作,文字处理是办公自动化的重要需求!软件开启Word自动排版新时代,Word自动排版软件将为您节省海量人工!新版本发布(无需注册,默认账号直接登陆),使用Word自动排版软件您将十倍以上提升排版效率和准确性,为您节省海量时间(为企业用户提供深度定制服务)。
相似软件
版本说明
软件地址3.6.0.1 最新版
查看
5.0.4.0920 官方版
查看
1.2.6 电脑版
查看
Word自动排版软件功能特色
一键处理,自动处理段落、表格、图形、公式、脚注、页眉页码、域;自动生成目录,能自动检查编号顺序,统一半角全角括号、修正显示不正常的符号和圈字,整体上下标m2 、H2O;统一kg,km,Pa,kPa,MPa,kW,kWh,kV,Hz,var等单位符号,自动绘制数学几何曲线图形、规程规范标准名称比对等。
Word自动排版软件特别适合Word论文自动排版、标书自动排版、设计文件自动排版、公文自动排版、法律文件自动排版、规程规范自动排版、考试试卷自动排版、招投标文件自动排版、各类商务Word长文档排版等格式要求严格的环境。
提升Word使用效率的免费功能包括:
批量替换工具(多个查找替换一次性处理,无需记忆通配符表达式)、上下标自动处理工具、段落工具(反向选择,特定编号段落选择)、表格工具(全选所有表格/非表格区域)、图形工具、页眉页脚工具、目录自动生成工具、颜色工具、样式工具、公文模板自动输出、格式板及超级格式刷、Excel转CAD工具、数学函数几何曲线自动绘制、规程规范标准名称比对等。
Word自动排版软件可以自定义格式参数并保存,加载和分发,因此并不需要每个人都明白参数的设置。
Word自动排版软件安装步骤
1、首先在本站下载Word自动排版软件包,得到rar格式压缩包,使用360压缩软件解压。
2、解压完成后双击排版大师.exe文件。
3、就可以直接进入Word自动排版软件登录界面,无需安装。
Word自动排版软件使用方法
1、首先打开Word自动排版软件,第一步要锁定文档,先用word打开文档并锁定
2、锁定文档后点击左上角的一键排版
3、最后再点击分布选项,分布插入目录和页眉页码,这样就使用成功了
Word自动排版软件常见问题
1、Word自动排版软件的运行环境 及主要应用场景?
Office2003-2016,操作系统:WinXP-Win10/32/64位,提供网络版和本地加密锁两种模式,为企业用户提供单机版本 ,无需联网
应用场景:⑴ 招投标文件自动排版 ⑵ 学术论文自动排版 ⑶ 毕业论文自动排版(本科、硕士、博士)
⑷ 科技报告/规划/技术文件自动排版 ⑸ 行政文件自动排版⑹ 法律法规自动排版 ⑺ 考试试卷自动排版
⑻ 标准规范自动排版(国家标准、部颁标准)⑼ 各类商务文档、Word长文档自动排版 ⑽ 其它格式要求严格的Word文档排版
2、Word自动排版软件处理后的文档能在Word中使用吗?
Word自动排版软件只在处理过程中调用Word内部命令对文档进行修改,处理 前后都是Word文档,和软件无关。
3、Word自动排版软件可以处理多长的文档,识别准确率高吗?
实际操作中处理过1000页左右的文档,过长的文档建议分成300-500页左右的单个文档。否则Word打开的速度会很慢。
软件经过长期文档排版的检测,如果编号规则统一,一键处理后基本不用手工修改。
4、Word自动排版软件能处理图形或者复杂的Word文档文档吗?
软件可以自动处理段落、表格、图形、公式、脚注、页眉、页脚、域等几乎所有Word对象。并且可以按照特定要求定制特定的功能。
5、Word自动排版软件能自动生成目录吗?
Word自动排版软件不仅可以自动生 成主目录,对于有编号的图目录和表目录也可以自动生成。此外还可以自动插入页码(可分节设置)。
6、Word自动排版软件排版的字体、段落等格式是否可以修改?
Word自动排版软件的参数界面中可以修改各种格式,包括字体、段落、表格、图形等 ,和Word中设置格式类似。
并且可以将修改的参数保存为方案,便于加载 或切换。
Word自动排版软件更新日志
1:全新界面,清爽,简单,高效
2:性能越来越好
华军小编推荐:
Word自动排版软件是一款功能强大的排版软件,可以帮助您自动处理段落标题、表格、图形、公式、脚注等,用于处理Word论文、报告、规范等要求严格的文档,还有万彩办公大师OfficeBox、GWD Text Editor、Lizard Safeguard Secure PDF Viewer、XML Explorer(XML Editor)、Sante CT Viewer等相关软件提供下载,有需要的小伙伴请点击下载使用。
-
win10系统word2019给标题设置添加设置自定义自动编号的方法
2020-10-05 22:37:18描述:win10系统word2019给标题设置添加自动编号的方法 步骤: 打开word->菜单栏->标题1->修改 选择格式->编号 选中编号->点击确定->确定 现在输入就可以自动编号了描述:win10系统word2019给标题设置添加自动编号的方法
步骤:- 打开word->菜单栏->标题1->修改
- 选择格式->编号
- 选中编号->点击确定->确定
- 现在输入就可以自动编号了
- 打开word->菜单栏->标题1->修改
-
word页面怎么显不完全 word页面视图显示不全怎么办
2021-06-25 01:37:47他们都是瞎回答,我也遇到了这样的问题,自己试了好多方法,终于试出来了,面上跟本搜不到正确方法,所以只能自己弄了,这次完美解决。首先,不能显示完全的页面视图先不用管,直接调成...在WORD中一个表格在一页显... -
Word插件【PDF转图片分页插入】
2018-02-07 14:44:14实现一键选择PDF,自动将PDF转换为图片,并分页插入图片到Word当前行,每个图后有一个分页符。支持Word2013-2016,C#Net4.0开发。 -
用 Python 自动生成 Word 文档并在指定位置插入图片
2021-02-22 16:33:44用Python生成Word文档 在指定位置插入图片 首先当然需要第三方库啦(▽) ...4.保存文档 注:本库仅支持生成Word2007以后版本的文档类型,即扩展名为.docx(ps:我用的WPS和word2019亲测也是阔以滴) 第一部分 -
关闭word/ppt后自动创建并打开新的文档
2020-09-16 10:39:57问题:关闭word或PPT文件后,系统自动创建一个新的空文件并打开解决方法:文件 → 选项 → 加载项 → 管理:com加载项 → 转到→取消不必要的加载项→确定。成功。 我也不知道是哪一个加载项带来的问题,我只保留了... -
真正解决VSCode运行时自动保存问题
2021-07-26 06:17:31转自:真正解决VSCode运行时自动保存问题 用VSCode总是忘记运行时需要保存一下,感觉ctrl+s操作非常多余(但是在编辑word文档之类的还是要习惯性保存一下),下面介绍一下怎样真正解决VSCode运行时保存问题 文件->... -
把WORD文档每一页拆分成单独的文件
2016-07-14 15:06:46Const nSteps = 200 ' 修改这里控制每隔几页分割一次 Set fso = CreateObject("Scripting.FileSystemObject") Set oSrcDoc = ActiveDocument Set oRange = oSrcDoc.Content nTotalPages = ... -
解决word保存后再打开,页眉多出横线的解决方法(非删除横线方法)
2020-04-16 10:45:10但是再次打开该文档后,每页都多出了一个横线页眉: 网上的方法都是治标不治本,只是教给你如何把横线去掉,但是下一次还会出现同样的问题。 解决方法 打开目录: C:\Users****(PC用户名)***\AppData\Roaming\... -
理工科Word论文排版(章节自动标号、公式自动标号、图片自动标号、表格自动标号、标号交叉引用、公式参数...
2021-05-28 12:42:32最近在完成论文的写作,无论是硕博士的大论文还是日常发布的小论文,精美的排版都会让评阅人心情舒畅,一个良好的word模板也会让论文写作变得简单容易。正所谓工欲善其事必先利其器,拿出半天的时间去为自己 ... -
公文处理助手 【全自动文档排版插件 For Word(32/64)】
2021-02-18 14:19:36是支持Word(32/64位)的COM插件(加载项),是公文处理必备的专业WORD自动排版、快速编辑插件,针加粗样式对文字、表格、图片都有各种实用的功能,操作简单快捷,实际工作中十分有用,可节省90%的排版时间,能使... -
word两页并排怎么变成单页排列
2021-08-24 16:24:261、首先打开一个Word文件,可以看到此时的页面是并排显示两张页面的。 2、需要设置为单页显示可以点击页面上方工具栏中的“视图”选项。 3、进入“视图”选项卡中找到“显示比例”中的“单页”选项,点击该... -
MS WORD 表格自动调整列宽,自动变漂亮,根据内容自动调整
2015-06-24 13:43:11在MS WORD中,当有大量的表格出现时,调整每个表格的的高和宽和大小将是一件非常累的事情,拖来拖去,非常耗时间,而且当WORD文档达到300页以上时,调整反应非常的慢,每次拖拉线后,需要等待一段时间其才完成调整,... -
word2016/2019 取消两页之间的空白后,下次打开仍有空白
2020-03-19 17:03:18通过两种方式取消两页之间的空白,强迫症看着难受: 1 双击空白处 2 左上角 文件-选项-显示-页面显示选项-取消勾选【在页面视图中显示页面间空白】 但下次打开还是会有空白 难道每次打开都要重新设置一下吗? ... -
word文档中表格顶头怎么调整_Word技巧大全,标书制作靠它准没错
2020-10-24 18:37:23Word应该是办公软件中使用频率最高的工具,但却一直不被很多人重视,以为它简单很容易学,但实际很多人并没有掌握其基本用法,以至于自己的工作效率一直提不高。今天分享的这些Word技巧包含了入门到精通,也许在你... -
使用Python自动化Microsoft Excel和Word
2021-04-17 09:19:30将Excel与Word集成,无缝生成自动报告 毫无疑问,微软的Excel和Word是公司和非公司领域使用最广泛的两款软件。它们实际上是“工作”的同义词。通常情况下,每一周我们都会将两者结合起来,并以某种方式发挥它们的... -
Word邮件合并功能详解:合并后生成多个word文档,删除空白页
2020-08-10 14:03:59Word邮件合并功能详解:合并后生成多个word文档,删除空白页 最近在实习,干了很多打杂得工作,所以office软件用的很多很多,瞬间觉得自己可以去裸考计算机二级了哈哈哈哈哈哈。今天因为工作用到了邮件合并这个功能... -
word
2020-12-23 22:23:41在word里各级钢筋符号怎么打出来在word里各级钢筋符号怎么打出来 方法一 步骤1:在word中输入钢筋符号时,先在输入法里增加中文(简体)-内码 步骤2:(区位输入法),然后调用屏幕键盘,输入"10+空格"就可以找到字符的快捷键... -
python3根据excel表数据自动生成word格式数据报告
2020-12-29 21:06:22将分析结果保存入word文件中 本文主要是讲如何根据简单的xlsx数据,生成word数据报告,首先需要先读取与分析xlsx中的数据,通过排序等等方式固定好分析哪些方面,然后来编写对应的代码,对应的示例xlsx文件如下: 1. ... -
word 论文排版 —— 按指定格式章节的自动编号
2017-03-06 19:14:53在word中如何实现章节标题自动编号标题样式与标题的编号是两个步骤,为标题建立编号是在为标题样式确定的基础后进行的。这是显而易见的,也即只有先定义了多级标题(也可使用 word 自带的标题样式),才可为这些多级... -
word文档基本操作
2021-06-28 10:27:22新建文档 (电脑入门到精通网 www.58116.cn)我们讲了Word第一课后,有位朋友和我说用起来太麻烦了,问他怎么个麻烦法,他说,有时要打印几份文件,每打印一份就要退出一次Word重来,所以特别麻烦。 其实根本用不着... -
如何把Word里的四张图片放在一页上
2021-06-12 01:47:052、 在“页面设置”中把“页边距”上下左右全改为“0.5厘米”,再将方向改成“横向”接着按“确定”。3、 然后插入要打印的图片,点击菜单栏“插入”→“图片”→“来自文件”。4、 找到存放图片的路径选择图片,并... -
Python : 一文学会办公自动化(Word、Excel、PPT)
2020-05-27 16:52:25操作Word: 考试系统生成Word试卷等 操作PPT : 用户画像分析等 使用的模块: xlrd模块 xlwt模块 smtplib模块 pywin32模块 python-ppt模块 python-docx模块 pymysql模块 xlsxwriter模块 1. xlrd模块 -
一键实现Word转PPT的三种方法评测
2021-01-14 11:30:28写好长达百页的word方案,老板让一夜之间做成ppt给客户汇报?如果你不学会一键将word转为ppt,那么只能“今夜再次无眠”了。Word转ppt并不是一个新话题,但是方法也是分优劣的,现在让小编搜遍全网来给大家总结三种... -
word里插入参考文献时,出现自动换行,排版很难看,怎么解决?有图!求大神指教!
2020-12-21 07:44:59扩展资料: 1、在页面设计方面使用页面布局/页面设置/纸张&页边距&文档网格进行纸张大小,页边距以及每行多少字以及每页多少行的设置。 2、在使用文本的输入方面,笔者积极推荐大家使用即点即输的方式,就是在word... -
WORD邮件合并功能工具盒v1.0官方免费版
2019-07-26 20:02:42WORD邮件合并功能工具盒是一款非常简单易用的可以用于将WORD邮件合并文档拆分为多个文件,读取WORD邮件合并后的文档,将每一页自动保存为单独的文件,有需要的朋友们可以前来下载使用。 说明 使用小工具之前请先... -
电脑突然关机wps没保存怎么办
2021-07-30 05:02:033、然后在鼠标左键单击,“备份管理” 4、进入界面以后,点击“查看其他备份“到这一步,相信大家都知道了吧,WPS文档一般都自带一个自动保存功能,所以你不要怕停电什么的! 5、最后点击进入这个界面以后,一切就... -
【Python自动化办公】实现excel表中的数据批量导入到word指定位置(表格形式和下滑线形式)
2021-12-03 22:04:52案例1——word模板为表格 数据 word模板(准备好需要的文档。) 最终效果 方法1 打开作为模板的word文档。...把每一页word生成一个文件 http://www.360doc.com/content/18/0813/17/94334_777982230.