Python:word,excel操作

一、读写docx

  1. 读取docx文件(无法读取旧的doc文件—可以先转化为docx再读取)
    pip install python-docx
    import docx
    def read_word(file_path):
      doc = docx.Document(file_path)
      text = []
      for paragraph in doc.paragraphs:
        text.append(paragraph.text)
      return ‘\n’.join(text)
  2. 读取表格
    def read_table(file_path):
      doc = docx.Document(file_path)
      tables = doc.tables
      for table in tables:
        table_rows = table.rows
        for row in table_rows:
        row_cells = row.cells
        for cell in row_cells:
          print(cell.text)
  3. 读取图片
    def read_images(file_path):
      doc = docx.Document(file_path)
      images = doc.inline_shapes
      for image in images:
        print(image.image.shape_type)     // 获取图片形状类型
        print(image.image.size)     // 获取图片大小
        print(image.image.source)     // 获取图片来源(文件路径)
  4. 写入word
    def create_word_document(file_path, title):
      doc = docx.Document()
      doc.title = title     // 标题
      doc.add_paragraph(“这是一段示例文本。”)     //段落
      add_picture(path)     // 图片
      t = doc.add_table(rows=rows, cols=cols, style=“Table Grid”)     //加表格
      cell = t.cell(i, j)     // 给表格中增加内容,i,j为表格位置:第i行,第j列
      cell.text = cell_text     // cell为表格中一个格子,text为格子里的值
    doc.save(path)     //保存

二、doc文件操作

使用win32com库函数
import win32com.client
word_ap = win32com.client.Dispatch(‘Word.Application’)
doc = word_app.Documents.Open(input_path)
…                       #对doc的各种操作
doc.Close()
word_ap.Quit()

补充说明:

  1. 使用win32com操作doc文件时,对doc文件名称有要求,即不能包含空格,否则open时报找不到文件错误(除了空格外,还有一些其他的字符也不被允许,但我忘记统计了)。
  2. 如果想批量将word文件(.doc,.docx)转为pdf文件,就可以使用上述函数 + doc.SaveAs(output_path, FileFormat=17)即可
  3. 对于包含空格的文件,你可以记录下原名称,再将其shuilt移动(重命名为另一个文件) or 重命名 去除文件名空格,对文件操作后,再saveAs保存为原名称文件即可(有其他更加简便的方法,欢迎分享!!!)
  4. 批量转word->pdf时,最好try-except一下,记录转失败的文件(因为有些word文件会因为原文件的某些设置,无法转成功,导致报错)。
批量将doc,docx文件转为pdf

import shutil
import win32com.client
import os


doc_path = “"
pdf_path = ""
pdf_tmp = ""


fs = []
for roots, _, files in os.walk(doc_path):
    for file in files:
        fs.append(roots + '/' + file)

print(len(fs))


def convert_to_pdf(input_path, output_path, word_app):
    print(f)
    doc = word_app.Documents.Open(input_path)
    print(doc)
    doc.SaveAs(output_path, FileFormat=17)
    doc.Close()


word_ap = win32com.client.Dispatch('Word.Application')

for f in fs:
    filename: str = os.path.basename(f)
    if (filename.endswith('.doc') or filename.endswith('.docx')) and not filename.startswith('~$'):
        list = filename.split(".")
        list[-1] = 'pdf'
        output_file = ".".join(list)
        try:
            convert_to_pdf(f, pdf_path + output_file, word_ap)
        except Exception as e:
            try:
                shutil.move(f, pdf_tmp + filename.replace(' ', '1'))
                convert_to_pdf(pdf_tmp + filename.replace(' ', '1'), pdf_tmp + 'tmp_file.pdf', word_ap)
                shutil.move(pdf_tmp + 'tmp_file.pdf', pdf_path + output_file)
            except Exception as e:
                print(f)
                with open(pdf_path + "error.txt", mode="a", encoding='utf-8') as file:
                    file.write(f + '\n')

word_ap.Quit()

三、读写excel

  1. 读取excel—pandas
    import pandas as pd
    data = pd.read_excel(‘example.xlsx’, engine=‘openpyxl’)
    print(data[‘A’])     # 打印 A 列的数据
    print(data.at[0, ‘A’])     # 打印第一行第一列的单元格数据
    data[‘type’] = ’A类‘ 新建列
    data.values.tolist()     # 将excel表转化为[[],[],[],[],…,[]]的格式,一个[]为一行

  2. 读取excel—openpyxl
    import openpyxl
    workbook = openpyxl.load_workbook(‘example.xlsx’)
    ws= workbook[‘Sheet1’]     #选择sheet
    rows = ws.rows     #所有行,相当于ws.iter_rows()
    for row in rows :
      for cell in row:
      print(cell.value, end=’ ')

  3. 写入excel:
    1)df = pd.DataFrame(data, columns=[‘列名1’, ‘列名2’])     #选择data格式为[[],[],[],[],…,[]]
      df.to_excel(‘aaaaaa.xlsx’, index=False, engine=‘openpyxl’)
    2)data.to_excel(‘aaaa.xlsx’, index=False, engine =‘openpyxl’)
    3)新增一列:

df = pd.read_excel('example.xlsx')
# 添加新列,新列的value固定
df['new_column'] = '1'           
#添加新列,新列的value不固定
new_colunm = [1,2,3,4]
df.insert(loc=0, column='new_colunm ', value=new_colunm )
df.to_excel(’aaa.xlsx‘, index=False)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Python可以用于处理WordExcel文件。对于处理Excel文件,可以使用xlsxwriter模块来创建Excel XLSX文件,并将文本、数字、公式和超链接写入其中的多个工作表。该模块还支持格式化等功能,可以说是功能最齐全的Excel处理模块之一。此外,还可以使用pandas库来处理Excel文件。\[2\] 对于处理Word文件,可以使用python-docx模块来提取Word表格,并将其保存在Excel文件中。可以使用Document类从Word文件中读取表格数据,然后使用openpyxl模块的Workbook类创建一个新的Excel文件,并将表格数据写入其中。具体的代码示例如下: ```python from docx import Document from openpyxl import Workbook doc = Document(r"path_to_word_file.docx") table = doc.tables\[0\] workbook = Workbook() sheet = workbook.active for row in table.rows: row_data = \[\] for cell in row.cells: row_data.append(cell.text) sheet.append(row_data) workbook.save(filename=r"path_to_excel_file.xlsx") ``` 这段代码将从Word文件中提取第一个表格的数据,并将其保存在一个新的Excel文件中。\[3\] #### 引用[.reference_title] - *1* [python处理excelword文档](https://blog.csdn.net/qq_29496135/article/details/104075368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PythonExcel/Word库](https://blog.csdn.net/xhtchina/article/details/125692712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python自动化办公——python操作ExcelWord、PDF集合大全](https://blog.csdn.net/weixin_41261833/article/details/106028038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值