Linux系统利用Python操作word和excel进行办公自动化
依赖
- Python3
- Python-docx 参考文档
pip install Python-docx
- openpyxl 参考文档
pip install openpyxl
读取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文件类型转换
- 安装libreoffice
sudo apt install libreoffice
- 安装JDK
sudo apt install openjdk-8-jdk
- 安装libreoffice-java-common组件
sudo apt install libreoffice-java-common
- 测试运行
soffice --headless --invisible --convert-to docx /test.doc
- 利用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