您的位置:时时app平台注册网站 > 编程知识 > 采取python读取word,写入execl【时时app平台注册网

采取python读取word,写入execl【时时app平台注册网

2019-11-21 02:21

代码如下:

接二连三多个数据表的用法: FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

风度翩翩、大器晚成对意气风发关乎:

概念:有五个表,在第三个表中的某风姿洒脱行只与第叁个表中的意气风发行相关,同期第一个表中的某大器晚成行,也只与第叁个表中的朝气蓬勃行相关,我们称那七个表为意气风发对黄金时代涉嫌。

例如:

第一张表:

ID

姓名

国籍

贡献

1001

王大锤

中国

万万没想到

1002

吉泽明步

日本

动作艺术片

1003

刀锋女王

未知

计划生育

其次张表:

ID

出生日期

逝世日期

1001

1988

NULL

1002

1984

NULL

1003

未知

3XXX

此地的率先张表的每风流倜傥行只与第二张表的意气风发行相对应。

升迁:生龙活虎对生机勃勃关乎是比比较少见的涉嫌项目。但在少数景况下,依然会供给接收那体系型。

事态黄金时代:五个表包含了太多的数据列

情景二:将数据分离到差异的表,划分不相同的安全等级。

气象三:将常用数据列抽出出来组成三个表

 

二、大器晚成对多涉及:

概念:有多张表,第三个表中的行能够与第叁个表中的大器晚成到三个行相关联,可是第二个表中的一整套只可以与第3个表中的大器晚成行相关联。

例如:

先是张表:

ID

姓名

国籍

 

1001

王大锤

中国

 

1002

吉泽明步

日本

 

1003

刀锋女王

未知

 

其次张表:

ID

节目ID

1001

10001

1001

10002

1003

10003

1003

10004

其三张表:

节目ID

节目名称

10001

万万没想到

10002

报告老板

10003

星际2

10004

英雄联盟

此地的首先张表的大器晚成行能够与第二张表的多行绝对应;第二张表的一站式与第三张表的意气风发行绝对应。

晋升:风姿浪漫对多关系是最数见不鲜的涉嫌项目。

 

三、多对多涉及:

概念:有七个表,第三个表的风流洒脱行能够与第4个表中的生龙活虎到多少个行相关联,同一时间,第一个表中的生龙活虎行能够与第五个表中的大器晚成到多少个行相关联。

例如:

首先张表:

ID

姓名

国籍

 

1001

王大锤

中国

 

1002

吉泽明步

日本

 

1003

刀锋女王

未知

 

其次张表:

ID

节目ID

1001

10001

1001

10002

1003

10003

1003

10004

其三张表:

节目ID

节目名称

10001

万万没想到

10002

报告老板

10003

星际2

10004

英雄联盟

在第一张与第三张表之间,一位能够参加多少个剧目,叁个剧目也得以有几个野山参预。比方王大锤参加了《万万没悟出》和《报告主任》。而《万万没悟出》中有王大锤和大石彩香。这种是多对多的涉及。

#coding:utf-8
import os
from docx import Document
import win32com
from win32com.client import Dispatch, constants

def 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 None

def 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)

铭记这几个原则,今后展开4表关联,5表关联就都不是怎么难事了 
 
剔除视图  

时时app平台注册网站 1

接连几日来多个数据表的用法: FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号

word里面有2张表,需求找到第二张表,并写入execl中:时时app平台注册网站 2

以下是其余网络朋友的补给:

 

始建视图  
Sql代码 

 

老是四个数据表的用法: FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号

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

采取python读取word,写入execl【时时app平台注册网站】。DROP VIEW view_name 

Sql代码 CREATE VIEW view_name AS SELECT t1.xxx, t2.xxx, t3.xxx FROM (table1 t1 INNER JOIN table2 t2 ON t1.fid = t2.fid) INNER JOIN table3 t3 ON t1.mid = t3.mid; 这里...

语法格式:
FROM (((表1 INNE智跑 JOIN 表2 ON 表1.字段号=表2.字段号) INNE景逸SUV JOIN 表3 ON 表1.字段号=表3.字段号) INNELAND JOIN 表4 ON Member.字段号=表4.字段号) INNELANDJOIN 表X ON Member.字段号=表X.字段号,只要套用该格式就可以了。

注意事项:
在输入字母进度中,一定要用土耳其(Turkey卡塔 尔(阿拉伯语:قطر‎语半角标点符号,单词之间留一半角空格;
采取python读取word,写入execl【时时app平台注册网站】。在确立数量表时,如若叁个表与三个表联接,那么那一个表中的字段必需是“数字”数据类型,而三个表中的同样字段必需是主键,何况是“自动编号”数 据类型。否则,很难联接成功。
代码嵌套飞快方法:如,想连接四个表,则只要在接连八个表的代码上加叁个左右括号(前括号加在FROM的末端,后括号加在代码的尾声就可以卡塔尔,然后 在后括号后面继续增进“INNEEnclave JOIN 表名X ON 表1.字段号=表X.字段号”代码就可以,这样就足以非常联接数据表了。  

老是三个数据表的用法: FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

复制代码 代码如下:

采取python读取word,写入execl【时时app平台注册网站】。多表联接是十三分使得的手艺,因为某 些景况下,大家需求赶上多少个表查询数据。

此处运用了3表关联,对于多表关联的 INNEOdyssey JOIN 写法有一个技巧

CREATE VIEW view_name AS 
SELECT t1.xxx, t2.xxx, t3.xxx 
FROM (table1 t1 
INNER JOIN table2 t2 ON t1.fid = t2.fid) 
INNER JOIN table3 t3 ON t1.mid = t3.mid; 
  1. 先写最轻巧易行的2表关联 INNEPAJERO JOIN
  2. 下一场使用 () 从 FROM 之后到语句结尾全部扩起来
  3. 在言辞结尾最早一而再三回九转与下八个表的 INNE哈弗 JOIN

本文由时时app平台注册网站发布于编程知识,转载请注明出处:采取python读取word,写入execl【时时app平台注册网

关键词: