精华内容
下载资源
问答
  • JAVA如何往多个word表格填写内容,多个word表格在同一页上。
  • vba 如何填写word表格中插入的表格的内容 代码怎么写
  • 介绍了VC++中调用word进行word表格填写简单过程,有详细详细的注释,希望对大家有所帮助
  • 资源中的源程序实现了VC++中进行word表格填写,可供参考。
  • python 批量填写word表格

    千次阅读 2020-03-22 22:01:21
    今天因为老爸下乡扶贫工作,要填很多word表格,一张表一张表填写显然太慢了,就简单写了一个python代码去处理。大体上就是使用docx库来批量填写word表格,至于word表格的数据来源是使用xlrd库从excel表格中读取出来...

    今天因为老爸下乡扶贫工作,要填很多word表格,一张表一张表填写显然太慢了,就简单写了一个python代码去处理。大体上就是使用docx库来批量填写word表格,至于word表格的数据来源是使用xlrd库从excel表格中读取出来的。
    要填的word表格就是下面这张表,需要填写的为高亮部分。
    word表格人员信息来自excle表格,如下图所示:
    excel表格每个人填写一张word表格,word表格可能是由于单元格合并的原因,许多cell并不是看上去的位置,如要填写身份证号码的单元格看起来像是第二行第四列的单元格(cell(1,3)),其实是cell(1,6)。总之这个word表格的格式非常的乱七八糟,python操作起来非常困难,试了好久才找到每一个需要填写的元素的位置,还有单元格的paragraphs和runs的数量、内容!!!

    import docx
    from docx import Document
    import xlrd
    
    #document对象、姓名、身份证号、电话、户籍所在地(村)、文化程度、正在填写的表格序号
    def Wirte2Docx(doc, name, id, phoneNumber, resAddr, cultureLevel, helthLevel, tableNum):
        
        #获取word文档中的表格list
        tables = doc.tables
        #确定要填写第几张表               modify
        table = tables[tableNum]
    
        #获取要填写或修改的cell(表格的单元格)
        nameCellRun = table.cell(1,1).paragraphs[0].runs[0]   #run对象可以看做文本和格式的结合体,修改run.text即仅修改文本,保留原有的格式。
        idCellRun = table.cell(1,6) #没有run对象 乱七八糟的表格格式!!!!烦死
        phoneCellRun = table.cell(1,20)
        
        #经测试发现这个cell有两个run:第一个为省      市        县(市、区)        乡镇(街道)        ,第二个为      村(社区)这部分
        resAddrCellRuns = table.cell(3,1).paragraphs[0].runs
        provenancesRun = resAddrCellRuns[0]
        countryRun = resAddrCellRuns[1]
    
        #□、博士研究生、□、硕士研究生、□、大学本科生、□、大专生、□、中专中技、 □、高中、□、初中、 □、小学 、□、其他 每个元素一个run
        cultureLevelCellRuns = table.cell(5,1).paragraphs[0].runs
    
        #□健康或良好   □一般或较弱    □有慢性病     □残疾 每个元素一个run 共八个run
        healthLevelRuns = table.cell(7,1).paragraphs[0].runs
    
    
    
    
        #使用run在原本的表格样式基础上仅对表格内容进行修改
        nameCellRun.text = name
        idCellRun.text = id
        phoneCellRun.text = phoneNumber
    
        provenances = "山西省   忻州市(市、区)   原平市(县、区)   段家堡村乡镇(街道)   "
        country = resAddr
        provenancesRun.text = provenances
        countryRun.text = country
    
        #填写文化水平
        choseFlag="☑"
        if "博士" in cultureLevel:
            cultureLevelCellRuns[0].text = choseFlag + "博士研究生"
        elif "硕士" in cultureLevel:
            cultureLevelCellRuns[2].text = choseFlag + "硕士研究生"
        elif "本科" in cultureLevel:
            cultureLevelCellRuns[4].text = choseFlag + "大学本科生"
        elif "大专" in cultureLevel:
            cultureLevelCellRuns[6].text = choseFlag + "大专生"
        elif "中专" in cultureLevel or "中职" in cultureLevel:
            cultureLevelCellRuns[8].text = choseFlag
        elif "高中" in cultureLevel:
            cultureLevelCellRuns[11].text = choseFlag
        elif "初中" in cultureLevel:
            cultureLevelCellRuns[14].text = choseFlag
        elif "小学" in cultureLevel:
            cultureLevelCellRuns[17].text = choseFlag
        else:
            cultureLevelCellRuns[20].text = choseFlag
            print("第%d个表格的文化水平格式不规范,需要人工填写,%s的文化水平为%s" % (tableNum+1, name, cultureLevel))
        
        #填写健康状况
        choseFlag="☑"
        if helthLevel == "健康" or helthLevel == "良好":
            healthLevelRuns[0].text = choseFlag + "健康或良好   □一般或较弱    □有慢性病     □残疾"
        elif "慢性病" in helthLevel:
            healthLevelRuns[0].text = "□健康或良好   □一般或较弱    " + choseFlag + "有慢性病     □残疾"
        elif "残疾" in helthLevel:
            healthLevelRuns[0].text = "□健康或良好   □一般或较弱    □有慢性病     " + choseFlag + "残疾"
        else:
            healthLevelRuns[0].text = "□健康或良好   " + choseFlag + "一般或较弱    □有慢性病     □残疾"
            
            print("第%d个表格健康水平需要人工填写,%s的健康水平为%s" % (tableNum+1, name, helthLevel))
    
    
        return
    
    
    if __name__ == "__main__":
    
        #读取xls文件中的数据
        workShop = xlrd.open_workbook("test1.xls")
        sheet = workShop.sheet_by_index(0)
    
        #打开word文档(表格未填写)
        doc = Document("test3.docx")
    
        for i in range(1077,1097): #青疙瘩村的人员信息位于excel表格的1077-1096行
            row = sheet.row_values(i) #获取该行的人员信息 放在一个list里
            Wirte2Docx(doc, row[1], row[2], row[16], "青疙瘩村", row[5], row[7], i-1077)
    
        #保存填写后的word文档
        doc.save("青疙瘩资料.docx")
    
    
    
    

    非常简单而不优美,但是懒得改了能用就行!

    展开全文
  • java操作word,自动填写word表格

    千次阅读 2018-09-26 06:51:25
    工作中常要填写各种word表格,其中内容有很多是重复的。于是想做一个工具,输入word文件所对应的xml格式文件,自动填写表格。 word其实可以转化成xml来处理,这一步可以手工用word把.doc格式文件另存为.xml格式。...

    工作中常要填写各种word表格,其中内容有很多是重复的。于是想做一个工具,输入word文件所对应的xml格式文件,自动填写表格。

    word其实可以转化成xml来处理,这一步可以手工用word把.doc格式文件另存为.xml格式。word的表格中,每一行对应一个<w:tr>标签;每一个格子对应一个<w:tc>标签;格子中每行的内容,对应一个<w:t>标签。

    对于xml的处理,可以用dom4j来处理。主要思路为:

    1.将所要自动填写的内容,按key  -- value的格式,写进一个properties文件中。并通过程序将文件内容取出,放入到entityList当中。

    2.从xml根节点开始,遍历所有节点。若当前为w:tc节点,则获取该节点下所有w:t的内容,与所有entityList中所有key值对比。若有匹配,则在下一个w:tc格子中,新加一个w:t把该key值对应的value填入该表格中。

    3.生成新的xml格式文件

     

    所有代码如下:

    1.xml处理相关函数:

    package com.XML.test;
    
    import java.io.File;  
    import java.io.FileOutputStream;  
    import java.io.FileWriter;  
    import java.io.OutputStreamWriter;  
    import java.nio.charset.Charset;  
    import java.nio.charset.CharsetEncoder;  
    import java.util.ArrayList;
    import java.util.Iterator;  
    import java.util.List;  
    
    import javax.xml.soap.Node;
      
    import org.dom4j.Attribute;  
    import org.dom4j.Document;  
    import org.dom4j.Element;  
    import org.dom4j.io.OutputFormat;  
    import org.dom4j.io.SAXReader;  
    import org.dom4j.io.XMLWriter;  
    import org.junit.Test;  
      
    public class Demo01 {  
      
        @Test  
        public void test() throws Exception {  
      
            // 创建saxReader对象  
            SAXReader reader = new SAXReader();  
            // 通过read方法读取一个文件 转换成Document对象  
            Document document = reader.read(new File("./src/倪锐个人简历表格.xml"));  
            //获取根节点元素对象  
            Element node = document.getRootElement();  
            //遍历所有的元素节点
            
            List<Entity> entityList= GetPro.GetEntityList();
            int i=0;
            for(Entity a:entityList){
            	System.out.println("Entity" +i +a.getKey()+" "+a.getValue()); 
            	i++;
            }
            listNodes(node,entityList);  
      
            
            // 写入到一个新的文件中  
            writer(document);  
      
        }  
      
        /** 
         * 把document对象写入新的文件 
         *  
         * @param document 
         * @throws Exception 
         */  
        public void writer(Document document) throws Exception {  
            // 紧凑的格式  
            // OutputFormat format = OutputFormat.createCompactFormat();  
            // 排版缩进的格式  
            OutputFormat format = OutputFormat.createPrettyPrint();  
            // 设置编码  
            format.setEncoding("UTF-8");  
            // 创建XMLWriter对象,指定了写出文件及编码格式  
            // XMLWriter writer = new XMLWriter(new FileWriter(new  
            // File("src//a.xml")),format);  
            XMLWriter writer = new XMLWriter(new OutputStreamWriter(  
                    new FileOutputStream(new File("src//a.xml")), "UTF-8"), format);  
            // 写入  
            writer.write(document);  
            // 立即写入  
            writer.flush();  
            // 关闭操作  
            writer.close();  
        }  
      
        /** 
         * 遍历当前节点元素下面的所有(元素的)子节点 
         *  
         * @param node 
         */  
        public void listNodes(Element node,List<Entity>  fillList) {  
            System.out.println("当前节点的名称::" + node.getName());  
            // 获取当前节点的所有属性节点  
            List<Attribute> list = node.attributes();  
            // 遍历属性节点  
            for (Attribute attr : list) {  
                System.out.println(attr.getText() + "-----" + attr.getName()  
                        + "---" + attr.getValue());  
            }  
             
           if (!(node.getTextTrim().equals(""))) {  
        	   System.out.println("文本内容::::" + node.getText()); 
           }
            if (node.getName().equals("tc")){
            	System.out.println("----------------enter tc------------------");
            	for(Entity ent:fillList){
            		rightFil(node,ent.getKey(),ent.getValue());
            	}        	
            }
            // 当前节点下面子节点迭代器  
            Iterator<Element> it = node.elementIterator();  
            // 遍历  
            while (it.hasNext()) {  
                // 获取某个子节点对象  
                Element e = it.next();  
                // 对子节点进行遍历  
                listNodes(e,fillList);  
            }  
        }  
    
        //node is where you find key value
        public String merge(Element node,String tag,String ini){
        	StringBuffer strMerg=new StringBuffer(ini);
        	Iterator<Element> it = node.elementIterator();  
        	if(node.getName().equals(tag)){
                strMerg.append(node.getText());
    //            System.out.println("for strMerg-----" + strMerg);
    //            System.out.println("for node.getText()=" + node.getText());
        	}
            while (it.hasNext()) {  
                // 获取某个子节点对象  
                Element e = it.next();  
                // 对子节点进行遍历  
                strMerg=new StringBuffer(merge(e,tag,strMerg.toString())); 
                
            }
    //        System.err.println("strMerg=" + strMerg);
    
        	return strMerg.toString().replace(" ", "");
        }
        public String mergebackup(Element node,String tag){
        	try{
        		List<Element> sibList=node.elements("p");
                System.err.println("size=-----" + sibList.size());
    
        		
            	StringBuffer strMerg=new StringBuffer("");
            	int i=0;
                for (Element elm : sibList) {  
                    System.out.println("sibList-----" + elm.element("r").element("t").getText());
                    strMerg.append(elm.element("r").element("t").getText());
                    System.out.println("for strMerg =" + strMerg);
                    i++;
                    System.err.println("i======" + i);
                }
    //            System.out.println("strMerg-----" + strMerg);
                
                System.out.println("strMerg del blanks-----" + strMerg.toString().replace(" ", ""));
                return strMerg.toString().replace(" ", "");
        	}catch(NullPointerException e){
        		System.out.println("merge: no t in this tc -----" );
        		return "";
        	}
    
    
        }
        public void rightFil(Element node,String key,String value){//node 为tc级别,合并所有t标签
        	String strMerg=merge(node,"t","");
        	if(strMerg.equals(key)&&strMerg.length()>0){
            	System.out.println("***********************"+key+"found");
            	System.out.println(node.getName());
    
            	//int j=node.indexOf(node.getParent());
            	Element father=node;//self tc tag
            	System.out.println(father.getName());
           	
            	Element sib=(Element) father.selectSingleNode("following-sibling::w:tc[1]");//next tc tag
            	if(sib!= null){
            		insertT(sib,value);
            	}
            	else{
            		
            	}
            }
        }
        
        public void rightFilBackup(Element node,String key,String value){//node 为t级别,不能合并所有t标签
        	if(node.getText().replace(" ", "").equals(key)){
            	System.out.println("***********************"+key+"found");
            	System.out.println(node.getName());
    
            	//int j=node.indexOf(node.getParent());
            	Element father=(Element) node.getParent().getParent().getParent();//self tc tag
            	System.out.println(father.getName());
           	
            	Element sib=(Element) father.selectSingleNode("following-sibling::w:tc[1]");//next tc tag
            	insertT(sib,value);
            	
            }
        }   
        public void insertT(Element tc,String value){
            
            List<Attribute> list = tc.attributes();  
            // 遍历属性节点  
            for (Attribute attr : list) {  
                System.out.println(attr.getText() + "-----" + attr.getName()  
                        + "---" + attr.getValue());  
            } 
     
            System.out.println("tc.attribute(\"id\")========");
            System.out.println(tc.attribute("id"));  
     
    
        	Element adE=tc.element("p");
        	System.out.println("adEtest++++++++++++====="+adE.getName());               
        	System.out.println("adEtest++++++++++++=====END"+adE.getName());  
        	Element r=adE.addElement("w:r");            	
        	Element rPr=r.addElement("w:rPr");
        	rPr.addElement("w:rFonts hint=\"eastAsia\"");
        	rPr.addElement("w:sz val=\"24\"");
        	Element t=r.addElement("w:t");
        	t.setText(value);
        }
        
        /** 
         * 介绍Element中的element方法和elements方法的使用 
         *  
         * @param node 
         */  
        public void elementMethod(Element node) {  
            // 获取node节点中,子节点的元素名称为西游记的元素节点。  
            Element e = node.element("西游记");  
            // 获取西游记元素节点中,子节点为作者的元素节点(可以看到只能获取第一个作者元素节点)  
            Element author = e.element("作者");  
      
            System.out.println(e.getName() + "----" + author.getText());  
      
            // 获取西游记这个元素节点 中,所有子节点名称为作者元素的节点 。  
      
            List<Element> authors = e.elements("作者");  
            for (Element aut : authors) {  
                System.out.println(aut.getText());  
            }  
      
            // 获取西游记这个元素节点 所有元素的子节点。  
            List<Element> elements = e.elements();  
      
            for (Element el : elements) {  
                System.out.println(el.getText());  
            }  
      
        }  
      
    }  
    

    2.自动填写格式设定:(key姓名--value张三) 

    package com.XML.test;
    
    public class Entity {
    	String key;
    	String value;
    
    	public String getKey() {
    		return key;
    	}
    
    	public void setKey(String key) {
    		this.key = key;
    	}
    
    	public String getValue() {
    		return value;
    	}
    
    	public void setValue(String value) {
    		this.value = value;
    	}
    
    }

    3.从properties文件读出到entityList程序 

    package com.XML.test;
    
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.Enumeration;
    import java.util.List;
    import java.util.Properties;
    
    import org.dom4j.DocumentException;
    
    //关于Properties类常用的操作
    public class GetPro {
    
      
      //读取Properties的全部信息
      public static List GetEntityList() throws IOException {
    	  List<Entity> entityList= new ArrayList();
          Properties pps = new Properties();
          InputStream in = new BufferedInputStream(new FileInputStream("./src/com/XML/test/properties"));
          pps.load(new InputStreamReader( in, "utf-8"));
          Enumeration en = pps.propertyNames(); //得到配置文件的名字
          
          while(en.hasMoreElements()) {
              String strKey = (String) en.nextElement();
              String strValue = pps.getProperty(strKey);
              Entity entity =new Entity();
              entity.setKey(strKey);
              entity.setValue(strValue);
              entityList.add(entity);
              System.out.println(strKey + "=" + strValue);
              
              
          }
    	return entityList;
          
      }
      public static void main(String[] args) throws DocumentException,
      IOException {
       Entity entity_1 =new Entity();
        List<Entity> entityList_1=GetEntityList();
        for(int i=0;i<entityList_1.size();i++){
         entity_1=entityList_1.get(i);
         System.out.println(entity_1.getKey() + "=" + entity_1.getValue());
        } 
       
      }
    
      }
    

    4.propeties文件 

    #Update long name
    #Sat Sep 22 00:57:39 CST 2018
    姓名=牛逼
    性别=女
    出身年月=1987年7月
    身份证号码=518209387428982347
    民族=汗
    政治面貌=中共党员
    婚姻状况=已婚
    健康状况=良好
    身高=175
    现户口所在地=北京
    所学专业=英语
    学历=本科
    最后毕业学校=清华大学
    毕业时间=2017年8月
    技术职称=高级工程师
    现工作单位=百度
    参加工作时间=2017年10月
    现从事专业=搬砖
    

     

    展开全文
  • python办公自动化之3python-docx,openpyxl——根据excel(word表格)填写word表格(excel) 原文链接:https://blog.csdn.net/FIREseeker/article/details/115519053
  • 一段原创Delphi7.0 操作word进行word文件表格填写的代码,本人业余爱好者,如有错误,敬请诸位大猿指出。
  • 系列文章 第一章 python办公自动化之批量修改docx——以修改含有表格的word文件为例 第二章 python办公自动化之批量生成...第三章 python办公自动化之python-docx,openpyxl——根据excel(word表格)填写word表格(excel)


    系列文章

    第一章 python办公自动化之批量修改docx——以修改含有表格的word文件为例
    第二章 python办公自动化之批量生成docx——根据excel (word)生成word (excel)
    第三章 python办公自动化之python-docx,openpyxl——根据excel(word表格)填写word表格(excel)

    一、使用openpyxl读写excel是否是必需的?

    1. 使用openpyxl读写excel当然不是必需的,pandas就可以良好的完成读取和写入,类似的包pypi上存在上十页的项目索引,当然openpyxl在这些同类包中出类拔萃。
    2. pandas适用于(大量)数据的分析和处理;若要对单元格(cell)级别进行个性化的操作,如合并某几处单元格,如在excel中生成图表,则适用openpyxl,penpyxl调用了excel的hook,可以说openpyxl是python版本的excel VBA

    二、快速熟悉openpyxl

    openpyxl官网列明了详细的用法,这里就不再赘述了,已经有不少自称原创的文章翻译了官网。在笔者看来,语言问题属于chrome浏览器或者360浏览器的翻译插件就可以完美解决的问题。官网+help()+dir()指令无往不利。
    在这里插入图片描述

    使用网页翻译
    
    输出:
    

    在这里插入图片描述

    2.1 openpyxl读取excel

    openpyxl读取现有excel

    from openpyxl import load_workbook
    import pandas as pdw
    b = load_workbook(filename = '样例.xlsx')
    print("sheeet names:",wb.sheetnames)
    ws1 = wb['合同'] 
    print("content of sheet {}:".format(ws1.title))
    for row in ws1.iter_rows(min_row=1, max_col=3, max_row=11, values_only=True):
        print(row)
    # openpyxl支持numpy和pandas
    # pd.DataFrame(ws1.values) #适用于没有表头和索引的情况
    from itertools import islice
    data = ws1.values
    cols = next(data)[1:]   #next(data)
    data = list(data)
    idx = [r[0] for r in data]
    data = (islice(r,1,None) for r in data)
    df = pd.DataFrame(data, index=idx, columns=cols)
    print("content of DataFrame:\n",df)
    

    输出:

    sheeet names: ['工资', '合同', 'Sheet3']
    content of sheet 合同:
    ('乙方', '合同金额', '工期')
    ('刘一', 10000, 10)
    ('陈二', 20000, 20)
    ('张三', 30000, 30)
    ('李四', 40000, 40)
    ('王五', 50000, 50)
    ('赵六', 60000, 60)
    ('钱七', 70000, 70)
    ('周八', 80000, 80)
    ('吴九', 90000, 90)
    ('郑十', 100000, 100)
    content of DataFrame:
           合同金额   工期
    刘一   10000   10
    陈二   20000   20
    张三   30000   30
    李四   40000   40
    王五   50000   50
    赵六   60000   60
    钱七   70000   70
    周八   80000   80
    吴九   90000   90
    郑十  100000  100
    

    2.2 python-docx写入word表格

    2.2.1 定义功能函数:在word文档中确定需要更改单元格的索引

    from docx import Document
    import re
    
    def find_index_table(pattern,document):
        #pattern为要查找的字符串
        idx_=[]
        idy_=[]
        z=0
        for table in document.tables:
            i=0
            for row in table.rows:
                id_=[]
                j=0
                for cell in row.cells:
                    id_.append([(z,i,j),cell.text])
                    if re.findall(pattern,cell.text):
                        idy_.append([(z,i,j),cell.text])
                    j+=1
                idx_.append(id_)
                i+=1
            z+=1
        return idx_,idy_
    #idx_,返回word中所有的cell索引以及cell中内容,(0,0,0)表示第1个表格,第1行,第1列,以此类推
    #idy_,返回查找到pattern的cell索引以及cell中的内容
    
    
    def change_table_value(table_cell_number,change,document):
        #table_cell_number,为需要修改内容的索引,(0,0,0)表示第1个表格,第1行,第1列,以此类推
        #change为要替换为的字符串
        for i in table_cell_number:
            document.tables[i[0]].cell(i[1],i[2]).text=change
    

    2.2.2 确定需要更改单元格的索引

    from docx import Document
    import re
    document = Document("建设工程勘察合同.docx")
    find_table=find_index_table("刘一",document)
    find_table[0] #输出word文档中所有的表格和单元格
    find_table[1] #输出找到“刘一”字符串的单元格
    

    本文需要修改的索引如下:

    Location=[(2, 1, 1), (2, 1, 2)]
    

    2.2.3 确定位置后(批量)修改

    change_table_value([Location[0]],str(df.loc["刘一","合同金额"]),document)
    change_table_value([Location[1]],str(df.loc["刘一","工期"]),document)
    document.save("刘一.docx")
    

    如果需要批量操作,参见第二章 python办公自动化之批量生成docx——根据excel (word)生成word (excel)

    2.3 python-docx读取word表格

    document = Document("刘一.docx")
    values_=[]
    Location=[(2, 1, 1), (2, 1, 2)] #索引已知
    for i in Location:
    	values_.append(document.tables[i[0]].cell(i[1],i[2]).text)
    print(values_)
    

    输出:

    ['10000', '10']
    

    2.4 openpyxl新建excel,新建sheet并赋值

    #更多基本操作,详见官网

    from openpyxl import Workbook
    from openpyxl.utils import get_column_letter
    wb = Workbook()
    dest_filename = 'empty_book.xlsx' 
    ws1 = wb.active  #新建工作薄默认新建一个sheet为当前活动sheet
    ws1.title = "range names"
    for row in range(10):
        ws1.append(range(10))
    ws2 = wb.create_sheet(title="Pi") #新建sheet,命名为Pi
    ws2['F5'] = 3.14
    ws3 = wb.create_sheet(title="Data")
    for row in range(2, 12): #赋值
        for col in range(5, 15):
            _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))
    print(ws3['F5'].value)
    wb.save(filename = dest_filename)
    

    后记

    • 感觉上来讲,使用包算不上编程,但是使用包确实带来效率的提升。当然这里要看编程的定义是什么,如果编程的定义是用代码解决特定问题,那使用包毫无疑问是编程。
    • 无论是python-docx还是openpyxl都适用于处理重复性强、具有标准化的任务(比如批量生成成绩通知单等),不适用于处理创造性的工作,比如使用word写散文写论文,使用excel创建表格做行业研究。
    • 相比于python-docx对word功能的复现,openpyxl对excel功能复现的完成度更高。

    本文相关资源已上传至CSDN, 请点击0积分下载

    展开全文
  • vc 操作word,包括新建文档,保存文档,写入文字,新建表格,更改表格格式,合并单元格,填写页眉页脚等等。
  • 如何用python提取Word 表格内容

    千次阅读 2019-11-14 09:39:26
    一个公司有若干个部门,一个部门有若干个员工,每一个员工填写一份自己的信息(Word 版),然后录入系统,Word 表格模板如下:  提取 Word 表格内容  填入内容如: 提取 Word 表格内容 首先我们需要做的就是把...

    一个公司有若干个部门,一个部门有若干个员工,每一个员工填写一份自己的信息(Word 版),然后录入系统,Word 表格模板如下:
    在这里插入图片描述
      提取 Word 表格内容
    在这里插入图片描述
      填入内容如:

    提取 Word 表格内容

    首先我们需要做的就是把数据提取出来,之后我们就可以对数据 为所欲为 进行相关操作了。

    提取表格数据代码如下:

    import docx

    docName = “C:/Users/Administrator/Desktop/信息.docx”

    # 打开文档

    docStr = docx.Document(docName)

    # 获取Word文档中所有表格

    numTables = docStr.tables

    # 把数据放到列表中

    my_list = []

    for table in numTables:

    # 行列个数

    row_count = len(table.rows)

    col_count = len(table.columns)

    for i in range(row_count):

    row = table.rows[i].cells

    for j in range(col_count):

    content = row[j].text

    my_list.append(content)

    # 将列表改为字典格式,方便进行相关操作

    my_dict = {}

    for i in range(len(my_list)):

    if i % 2:

    try:

    # 去除单元格为空的内容

    if k:

    my_dict[k] = my_list[i]

    except:

    pass

    else:

    k = my_list[i]

    print(my_dict)

    结果如下:

    {‘姓名’: ‘Apollo’, ‘证件类型’: ‘身份证’, ‘证件号码’: ‘123456789012345678’, ‘性别’: ‘男’, ‘出生日期’: ‘2017.6.6’, ‘婚姻状况’: ‘未婚’, ‘户籍区划’: ‘河北省唐山市路北区’, ‘户籍详细地址’: ‘路北区智源里1-1-2’, ‘联系方式’: ‘110’, ‘职务’: ‘警察’}
      
       更加详细内容可访问https://support.i-search.com.cn/article/1573529945760

    展开全文
  • 如题,根据Excel内容批量生成Word表格,针对大量调查卡片填写等需求。 思路是:先制作映射文件,后根据映射文件从Excl中读取数据,至Word中填写数据。 注:业余开发,有问题欢迎邮件反馈(270740905@qq.com)。 待...
  • 易语言word表格

    2015-12-07 17:35:01
    易语言word生成表格,包括合并单元格,字体,设置单元格属性
  • 目录.bat 某钢结构工程安装全套验收资料 2007-11-20钢结构 表L01 钢结构技术交底记录.dot 表M03 钢结构建筑材料.doc 表N03 钢结构施工检查记录.doc 表N16 钢结构 构件吊装检查记录.doc 表Q05 钢结构隐蔽工程检查验收...
  • 下载源代码 ...或者程序提取数据库的内容生成word表格,使用户方便的查看和修改,打印。但是VC++中调用word的确容易,特别是对word中各种函数的使用,本文以作者的工作经验详细介绍一下如...
  • 问题是,我们如何将取出的数据填入到Word表格中。因为Word里面的表格不同Excel,在Excel里面,我们可以任意填入对应的单元格。但是在Word里面,我们并可以这样快捷的实现。 三、实现方法: 1、若Word中的表格并...
  • word在日常办公室必可少的软件,大家在excel里制作表格非常容易。在word软件里制作表格就蒙圈了,这,最近有朋友问小编怎么在word中制作表格呢?下面,小编就来跟大家讲解word制作表格的操作方法了。Word中制作...
  • 根据Excel内容批量生成Word表格

    千次阅读 2020-08-13 17:09:07
    现在提供一种解决方法:将大量内容信息填到Excel中,然后利用下面软件批量生成Word表格。 步骤:①先制作映射文件(txt格式);②根据映射文件从Excl中读取数据,至Word中填写数据 下面是下载地址(附教程):...
  • Word 插入内容表格不换页

    千次阅读 2019-09-10 13:58:11
    答:选中表格,右键选择“表格属性”。在新跳出的窗口内选择“允许跨页断行”。然后选择“确定”。
  • 今天给大家带来一个Word技巧。Excel中的数据有效性咱们都用过,可以限制规范内容的输入。其实在Word表格中,也可以实现... 下面这个Word表格是一份电子版的员工信息表,要求每个员工据实填写: 员工信息表 姓名 性别
  • visual c++操作word文件 新建 保存 新建表格 更改表格 格式合并单元格 填写页眉页脚.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,067
精华内容 3,226
关键字:

word表格不能填写内容