使用python读取word,写入execl

2018-03-02 08:28:58来源:cnblogs.com作者:charlieroro人点击

分享

word里面有2张表,需要找到第二张表,并写入execl中:

代码如下:

#coding:utf-8import osfrom docx import Documentimport win32comfrom win32com.client import Dispatch, constantsdef parse_docx(f,title):    d = Document(f)    for t in d.tables:        '''获取需要的表'''        tbTitle = t.cell(0, 0).text        if title == tbTitle:            tableInfo = []            columnLen = len(t.columns)            rowLen = len(t.rows)            for i in range(0,columnLen):                tmp = []                for row in t.rows:                    tmp.append(row.cells[i].text)                #删除第一个元素->表名                del(tmp[0])                tableInfo.append(tmp)            #返回的后两个参数表示tableInfo表的行数和列数            return [tbTitle,tableInfo,rowLen-1,columnLen]    return Nonedef writeExecl(fileName,sheet,tableInfo):    excel = win32com.client.Dispatch('Excel.Application')    excel.Visible=0    excel.DisplayAlerts=0    #对传入文件名的处理    if fileName:        if os.path.exists(fileName):            workbook = excel.Workbooks.Open(fileName)        else:            workbook = excel.Workbooks.Add()            workbook.SaveAs(fileName)    else:        workbook = excel.Workbooks.Add()    try:        sht = workbook.Worksheets(sheet)    except:        sheetNew = workbook.Worksheets.Add()        sheetNew.Name =sheet        sheetNew.Activate()        sht = workbook.Worksheets(sheet)    #execl表格是从1开始的    sht.Cells(1, 1).Value = tableInfo[0]    #把tableInfo看作是一行数据,依次赋值    for i in range(0,tableInfo[3]):        for j in range(0,tableInfo[2]):            sht.Cells(j+2, i+1).Value = tableInfo[1][i][j]    workbook.Save()    excel.Application.Quit()if __name__ == "__main__":    docxFile = "123.docx"    execlFile = "roro.xlsx"    sheet = "roro"    tableName = "内科"    #读取word中tableName的内容    tableInfo = parse_docx(docxFile,tableName)    #处理execl    writeExecl(execlFile,sheet,tableInfo)

 运行后生成文件 roro.xlsx,内容如下:

相关文章

    无相关信息

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台