Word表格转换到Excel中

该博客介绍了如何在MAC系统中,使用Python的`python-docx`和`xlsxwriter`库来读取Word文档中的表格,并将其内容写入Excel文件,以便进行数据筛选操作。首先,通过`get_files`函数获取所有.docx文件,然后使用`read_docx`函数解析表格数据,最后利用`write_excel`函数将数据写入Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:MAC把word文档中的表格解析后,存入excel中,方便数据筛选

'''
Read data from docx file and write it to excel file.

requests:
    pip3 install python-docx
    pip3 install xlsxwriter
mac不支持win32com
'''
import docx
import xlsxwriter
import os
import re

# get all docx files in the directory
def get_files(dir_name):
    files = []
    for file in os.listdir(dir_name): #返回指定目录下的所有文件和目录名
        if file.endswith(".docx"):  #判断字符串是否以指定字符或⼦字符串结尾,返回布尔值
            files.append(file)
    return files

# read data from docx file
def read_docx(file_name):
    doc = docx.Document(file_name) #读入文件
    tables = doc.tables
    table = tables[0] #通过下标,获取文件中的第一个表格
    # for row in table.rows:
    #     for cell in row.cells:
    #         print(cell.text)
    #第一类:身高,re.findall()提取数,返回的是数组
    height = re.findall(r"\d*?cm",table.cell(0,1).text)[0] #正则表达式*?遇到\d开始和cm结束就进行截取
    ##第二类:血压,要用split和[]截取
    bld_str = table.cell(1,1).text.split(' ')[0] #以空格为分隔符
    bld_presure_high = bld_str.split('/')[0]
    bld_presure_low = bld_str.split('/')[1]
    #第三类:爱好,只需要text即可
    fav = table.cell(2,1).text
    return (height,bld_presure_high,bld_presure_low,fav)

# write data to excel file
def write_excel(row,col,data):   
    for d in data:
        worksheet.write(row, col, d)
        col += 1


if __name__ == '__main__':
    dir_name = "/Users/……/Desktop/word"
    row = 0
    col = 0
    workbook = xlsxwriter.Workbook("/Users/……/Desktop/word/excel.xlsx")
    worksheet = workbook.add_worksheet()
    for file in get_files(dir_name):
        data = read_docx(dir_name + "/" + file)
        print(data)
        write_excel(row,col,data) 
        row += 1
    workbook.close()

Excel中使用VBA(Visual Basic for Applications)将Word文档中的表格转换Excel表格,可以编写一段脚本来自动化这个过程。以下是简单的步骤示例代码: 1. **准备工作**:首先打开一个新的Excel工作簿,并启用VBA编辑器。可通过按下Alt + F11快捷键来打开。 2. **创建宏**:在VBA编辑器窗口中,选择“插入” > “模块”,然后粘贴下面的代码: ```vba Sub ConvertWordTableToExcel() Dim WordApp As Object Dim WordDoc As Object Dim ExcelApp As Object Dim ExcelSheet As Worksheet Dim WordRange As Range Dim RowCounter As Long ' 创建Word应用对象 Set WordApp = CreateObject("Word.Application") WordApp.Visible = False ' 打开Word文档 Set WordDoc = WordApp.Documents.Open("C:\path\to\your\word.docx") ' 替换为你Word文件的实际路径 ' 选取Word中的表格范围 Set WordRange = WordDoc.Tables(1) ' 假设只有一个表格,如果有多张,需要更改此处 ' 创建Excel应用对象 Set ExcelApp = CreateObject("Excel.Application") ' 新建一个工作簿并激活第一张工作表 Set ExcelSheet = ExcelApp.Workbooks.Add().Sheets(1) ExcelSheet.Activate ' 将Word表格复制到Excel WordRange.CopyExcelFormat Destination:=ActiveSheet.Range("A1") ' 确保数据已粘贴并关闭Word文档 Application.CutCopyMode = False WordDoc.Close SaveChanges:=False WordApp.Quit ' 删除Excel的第一行(因为Word表格的标题通常作为第一行) If Not ActiveSheet.Cells(1).Row = 1 Then Exit Sub ' 如果不是,则跳过此行 Rows(1).Delete ' 提示操作完成 MsgBox "Word表格已成功转换Excel!" End Sub ``` **注意**: - 你需要替换`"C:\path\to\your\word.docx"`为实际的Word文件路径。 - 这段代码假设Word表格位于第一个位置,如果有其他条件,如表格编号、名称等变化,可能需要调整代码以匹配实际情况。 - 使用完成后别忘了保存宏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值