Linux系统利用Python操作word和excel进行办公自动化

依赖

读取Excel文件

import openpyxl

#加载excel文件
workbook = openpyxl.load_workbook('未命名 1.xlsx', read_only=False)
#获取指定sheet
sheet = workbook.get_sheet_by_name('Sheet1')
#表格最后一行的下标
max_row = sheet.max_row
#遍历表格每一行,因为有标题行所以从第二行开始
for row_index in range(2,max_row + 1):
  cell = sheet.cell(row_index,1)
  #读取A列的数据
  print(cell.text)
  #写入数据到B列
  sheet['B{}'.format(row_index)] = 'test'
#保存文档
workbook.save('output.xlsx')

读取Word文件

*注意:Python-docx只支持操作.docx文件,如果需要操作.doc文件则需要将其转换格式后才能使用该类库操作

import docx

#打开docx文档
doc = docx.Document(you_file_path)
#获取文档里的段落文本
print(doc.paragraphs[0].text)
table = doc.tables[0]
#获取表格中的内容,cell(行,列)
print(table.cell(1,2).text)

word文件类型转换

  1. 安装libreoffice
sudo apt install libreoffice
  1. 安装JDK
sudo apt install openjdk-8-jdk
  1. 安装libreoffice-java-common组件
sudo apt install libreoffice-java-common
  1. 测试运行
soffice --headless --invisible --convert-to docx /test.doc
  1. 利用bash批处理文件
#!/bin/bash

# 检查libreoffice是否已安装
if ! command -v libreoffice &> /dev/null
then
    echo "没有安装LibreOffice,请安装后重试."
    exit
fi

# 检查输入参数
if [ -z "$1" ] || [ -z "$2" ]
then
    echo "请指定源目录与结果输出目录参数"
    exit
fi

# 查找源目录与其子目录中所有的.doc文件
find "$1" -type f -name '*.doc' | while read file
do
    echo "转换文档"
    # 转换文档格式为docx
    libreoffice --headless --convert-to docx "$file" --outdir "$2"
done

find "$1" -type f -name '*.docx' | while read file

echo "转换完成."

把上面代码拷贝保存到convert-doc-to-docx.sh文件中,然后使用bash执行该文件,并指定源目录路径与输出路径为参数

bash convert-doc-to-docx.sh /source/directory /output/directory
posted @ 2023-04-06 14:01  安培昌浩  阅读(761)  评论(0编辑  收藏  举报