统计word版入场报告

import re
from docx import Document
from docx.shared import Pt
from Baidu_Text_transAPI_2 import baidu_api_fanyi
from docx.shared import Cm, RGBColor,Inches
from docx.oxml.ns import qn
from openpyxl import load_workbook
# 打开Word文档
doc = Document(r'C:\Users\11255\Documents\深度修理数据库5.08\统计工具及数据模板5.27\P-4710 APU IIR.docx')
# 打开Excel文档
workbook = load_workbook(r'C:\Users\11255\Documents\深度修理数据库5.08\统计工具及数据模板5.27\APU故障统计模板6.13.xlsx')
# 选择指定的工作表,这里假设是第一个工作表,或者你也可以通过名字选择
sheet = workbook['P4710']
table = doc.tables[3]  # 假设你知道表格的索引
cell_text = table.cell(1, 3).text#机子号
print(cell_text)
sheet.cell(1, 2, value=cell_text)
cell_text = table.cell(2, 1).text#总使用时间
print(cell_text)
sheet.cell(1, 4, value=cell_text)
cell_text = table.cell(2, 5).text#上次到现在使用时间
sheet.cell(1, 7, value=cell_text)
print(cell_text)
cell_text = table.cell(0, 3).text
sheet.cell(1, 9, value=cell_text)
print(cell_text)

'''打开excel表格,输出所有需要关注的件号'''
#遍历指定列(例如'E'列)的第4行到第64行的数据

pn=[]#所有统计件号
for row in range(4, 65):  # 注意range的结束是不包含的,所以使用65来包括第64行
    cell_value = sheet[f'E{row}'].value  # 假设我们要获取的是A列的数据
    pn.append(cell_value)
print(pn)  # 输出单元格的值


'''定义函数:如果能在word表格中找到件号信息,返回表格位置,否则返回不能找到件号信息0'''
def find_pn(target_number):
    all_cell_text=[]
    all_row_index=[]
    all_col_index=[]
    for table_idx, table in enumerate(doc.tables):
    # 遍历表格中的每一行
        for row_idx, row in enumerate(table.rows):
        # 遍历每一行中的单元格
            for cell_idx, cell in enumerate(row.cells):
            # 检查单元格文本是否包含指定的数字
                if target_number in cell.text:
                    #print(f"找到数字 {target_number} 在表格 {table_idx + 1} 的位置: 行 {row_idx + 1}, 列 {cell_idx + 1}")
                    # 获取指定的表格
                    table = doc.tables[table_idx]  # 假设你知道表格的索引
                    # 获取指定的行和列
                    row_index = row_idx   # 行索引(从0开始)
                    col_index = cell_idx   # 列索引(从0开始)
                    # 获取指定单元格的文本
                    cell_text = table.cell(row_index, col_index).text
                    all_cell_text.append(cell_text )
                    all_row_index.append(row_index)
                    all_col_index.append(col_index)
                    #print(f"单元格文本: {cell_text}")
                    for inline in cell._element.getchildren():
                        if inline.tag.endswith('drawing'):
                            # 这里你可以进一步处理图片,但请注意,这通常不是直接的方法
                            # 你可能需要解析XML来更准确地定位图片
                            print("单元格中似乎包含图片,但获取具体图片信息比较复杂。")
                            # 你可能需要自己编写代码来解析XML并找到与单元格相关联的图片
                            # 或者,你可以通过图片在文档中的位置来手动推断它是否与单元格相关联
    return(all_cell_text,all_row_index,all_col_index)

j=4
for i in pn:
    if find_pn(str(i))[0]==[]:
        #指定行列写入文字
        sheet.cell(row=j, column=6, value="无故障合格")
    else:
        text=find_pn(str(i))[0][0]
        sheet.cell(row=j, column=6, value="有故障")
        pattern =  r'.+?\d\)'
        text = re.sub(pattern, r'', text)
        pattern = r',(.+?)'
        text = re.sub(pattern, r'\1', text)
        s = baidu_api_fanyi(text)
        sheet.cell(row=j, column=7, value=s)
    j+=1
#保存修改后的Excel文档
workbook.save(r'test.xlsx')
print("处理结束")

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值