精华内容
下载资源
问答
  • 今天小编就为大家分享一篇pandas dataframe添加表格框线输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了python opencv将表格图片按照表格框线分割和识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 超级列表默认的线色为...经试验发现,窗口重绘消息是排在列表重绘消息之后,这样就好办了,我们在列表重绘消息里发送一个窗口重绘消息,然后在窗口重绘消息里对列表框画表格线。经试验此法获得成功,效果不错。
  • pandas dataframe添加表格框线输出

    千次阅读 2019-01-09 23:57:05
    datafrma如下,现在要给其添加上表格框线。利用texttable。  tb=Texttable() tb.set_cols_align(['l','r','r']) tb.set_cols_dtype(['t','i','i']) tb.header(df.columns.get_values()) tb.add_rows(df....

    将dataframe添加到texttable里面,实现格式化输出。

    data=[{"name":"Amay","age":20,"result":80},
          {"name":"Tom","age":32,"result":90}]
    df=pd.DataFrame(data,columns=['name','age','result'])
    print(df)

    datafrma如下,现在要给其添加上表格框线。利用texttable。 

    tb=Texttable()
    tb.set_cols_align(['l','r','r'])
    tb.set_cols_dtype(['t','i','i'])
    tb.header(df.columns.get_values())
    tb.add_rows(df.values,header=False)
    '''
    header=False表示不将第一参数的第一行作为标题,
    这样我们之前的添加的标题就会起作用了
    '''
    print(tb.draw())

     上面就是设置表格输出的对其格式,以及列的数据类型。‘set_cols_align是对水平位置上的左中右靠齐。‘l’表示向左。‘c'表示居中,'r'向右。

    set_col_dtype用于设置列的数据类型、数据类型的对应如:

    ['t', # text
    'f', # float (decimal)
    'e', # float (exponent)
    'i', # integer
    'a' # automatic]

    tb.header(df.columns.get_values())这句是添加标题。
    tb.add_rows(df.values,header=False)这句是添加数据行。默认会将数据行的第一行作为标题。如果我们不设置header=False的话,返回结果:

    之前指定的标题没起作用。应该是将第一行作为标题了。

    设置了header=False后结果就出来了:

     最后发一下完整的代码:

    # -*- coding: utf-8 -*-
    """
    Created on Tue Jan  8 16:47:17 2019
    Python Version:3.6.7
    @author: Fanxiaolei
    """
    import pandas as pd
    from texttable import Texttable
    data=[{"name":"Amay","age":20,"result":80},
          {"name":"Tom","age":32,"result":90}]
    df=pd.DataFrame(data,columns=['name','age','result'])
    print(df)
    print('添加表格线之后:')
    tb=Texttable()
    tb.set_cols_align(['l','r','r'])
    tb.set_cols_dtype(['t','i','i'])
    tb.header(df.columns.get_values())
    tb.add_rows(df.values,header=False)
    '''
    header=False表示不将第一参数的第一行作为标题,
    这样我们之前的添加的标题就会起作用了
    '''
    print(tb.draw())

     

    展开全文
  • 超级列表默认的线色为...经试验发现,窗口重绘消息是排在列表重绘消息之后,这样就好办了,我们在列表重绘消息里发送一个窗口重绘消息,然后在窗口重绘消息里对列表框画表格线。经试验此法获得成功,效果不错。
  • 基于游程聚类的表格框线检测算法.pdf
  • python+opencv将表格图片按照表格框线分割、识别

    千次阅读 多人点赞 2019-06-01 15:22:58
    如下小程序为使用python+opencv将表格图片,按照表格进行分割,并识别分割后的子图片中的文字,希望对需要的小伙伴有一些些帮助。...将图片按照表格框线交叉点分割成子图片(传入图片路径) @author: hx """ impo...

           如下小程序为使用python+opencv将表格图片,按照表格进行分割,并识别分割后的子图片中的文字,希望对需要的小伙伴有一些些帮助。具体的实现见如下代码。

    # -*- coding: utf-8 -*-
    """
    Created on Tue May 28 19:23:19 2019
    将图片按照表格框线交叉点分割成子图片(传入图片路径)
    @author: hx
    """
    
    import cv2
    import numpy as np
    import pytesseract
    
    image = cv2.imread('C:/Users/Administrator/Desktop/7.jpg', 1)
    #灰度图片
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    #二值化
    binary = cv2.adaptiveThreshold(~gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 35, -5)
    #ret,binary = cv2.threshold(~gray, 127, 255, cv2.THRESH_BINARY)
    cv2.imshow("二值化图片:", binary) #展示图片
    cv2.waitKey(0)
    
    rows,cols=binary.shape
    scale = 40
    #识别横线
    kernel  = cv2.getStructuringElement(cv2.MORPH_RECT,(cols//scale,1))
    eroded = cv2.erode(binary,kernel,iterations = 1)
    #cv2.imshow("Eroded Image",eroded)
    dilatedcol = cv2.dilate(eroded,kernel,iterations = 1)
    cv2.imshow("表格横线展示:",dilatedcol)
    cv2.waitKey(0)
    
    #识别竖线
    scale = 20
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(1,rows//scale))
    eroded = cv2.erode(binary,kernel,iterations = 1)
    dilatedrow = cv2.dilate(eroded,kernel,iterations = 1)
    cv2.imshow("表格竖线展示:",dilatedrow)
    cv2.waitKey(0)
    
    #标识交点
    bitwiseAnd = cv2.bitwise_and(dilatedcol,dilatedrow)
    cv2.imshow("表格交点展示:",bitwiseAnd)
    cv2.waitKey(0)
    # cv2.imwrite("my.png",bitwiseAnd) #将二值像素点生成图片保存
    
    #标识表格
    merge = cv2.add(dilatedcol,dilatedrow)
    cv2.imshow("表格整体展示:",merge)
    cv2.waitKey(0)
    
    
    #两张图片进行减法运算,去掉表格框线
    merge2 = cv2.subtract(binary,merge)
    cv2.imshow("图片去掉表格框线展示:",merge2)
    cv2.waitKey(0)
    
    #识别黑白图中的白色交叉点,将横纵坐标取出
    ys,xs = np.where(bitwiseAnd>0)
    
    mylisty=[] #纵坐标
    mylistx=[] #横坐标
    
    #通过排序,获取跳变的x和y的值,说明是交点,否则交点会有好多像素值值相近,我只取相近值的最后一点
    #这个10的跳变不是固定的,根据不同的图片会有微调,基本上为单元格表格的高度(y坐标跳变)和长度(x坐标跳变)
    i = 0
    myxs=np.sort(xs)
    for i in range(len(myxs)-1):
        if(myxs[i+1]-myxs[i]>10):
            mylistx.append(myxs[i])
        i=i+1
    mylistx.append(myxs[i]) #要将最后一个点加入
    
    
    i = 0
    myys=np.sort(ys)
    #print(np.sort(ys))
    for i in range(len(myys)-1):
        if(myys[i+1]-myys[i]>10):
            mylisty.append(myys[i])
        i=i+1
    mylisty.append(myys[i]) #要将最后一个点加入
    
    print('mylisty',mylisty)
    print('mylistx',mylistx)
    
    
    #循环y坐标,x坐标分割表格
    for i in range(len(mylisty)-1):
        for j in range(len(mylistx)-1):
            #在分割时,第一个参数为y坐标,第二个参数为x坐标
            ROI = image[mylisty[i]+3:mylisty[i+1]-3,mylistx[j]:mylistx[j+1]-3] #减去3的原因是由于我缩小ROI范围
            cv2.imshow("分割后子图片展示:",ROI)
            cv2.waitKey(0)
    
            #special_char_list = '`~!@#$%^&*()-_=+[]{}|\\;:‘’,。《》/?ˇ'
            pytesseract.pytesseract.tesseract_cmd = 'E:/Tesseract-OCR/tesseract.exe'
            text1 = pytesseract.image_to_string(ROI)  #读取文字,此为默认英文
            #text2 = ''.join([char for char in text2 if char not in special_char_list])
            print('识别分割子图片信息为:'+text1)
            j=j+1
        i=i+1
            
        
    
        

    喜欢我的文章希望和我一起成长的宝宝们,可以搜索并添加公众号TryTestwonderful ,或者扫描下方二维码添加公众号

    展开全文
  • word之如何独立地拖动表格框线

    千次阅读 2018-12-04 19:15:35
    在word填表的时候经常要调整表的间距,但有时拖动一个表上下的单元格都会动。...其实是因为我们没有选定要拖动的框线。 选定要拖动的框线,变成灰色 再次拖动框线即可。 这样框线就会独立的调整间距了。 ...

    在word填表的时候经常要调整表的间距,但有时拖动一个表上下的单元格都会动。

    其实是因为我们没有选定要拖动的框线。

    1. 选定要拖动的框线,变成灰色
    2. 再次拖动框线即可。

    这样框线就会独立的调整间距了。

    展开全文
  • 使表格框线设置为白色,即隐藏。 以下代码为设置框线 from docx.oxml import OxmlElement from docx.oxml.ns import qn def set_cell_border(cell, **kwargs): """ Set cell`s border Usage: set_cell_border...

    想在docx表格中插入图
    使表格框线设置为白色,即隐藏。

    以下代码为设置框线
    参考:http://officeopenxml.com/WPtableBorders.php

    
    from docx.oxml import OxmlElement
    from docx.oxml.ns import qn
    
    def set_cell_border(cell, **kwargs):
        """
        Set cell`s border
        Usage:
        set_cell_border(
            cell,
            top={"sz": 12, "val": "single", "color": "#FF0000", "space": "0"},
            bottom={"sz": 12, "color": "#00FF00", "val": "single"},
            left={"sz": 24, "val": "dashed", "shadow": "true"},
            right={"sz": 12, "val": "dashed"},
        )
        """
        tc = cell._tc
        tcPr = tc.get_or_add_tcPr()
    
        # check for tag existnace, if none found, then create one
        tcBorders = tcPr.first_child_found_in("w:tcBorders")
        if tcBorders is None:
            tcBorders = OxmlElement('w:tcBorders')
            tcPr.append(tcBorders)
    
        # list over all available tags
        for edge in ('left', 'top', 'right', 'bottom', 'insideH', 'insideV'):
            edge_data = kwargs.get(edge)
            if edge_data:
                tag = 'w:{}'.format(edge)
    
                # check for tag existnace, if none found, then create one
                element = tcBorders.find(qn(tag))
                if element is None:
                    element = OxmlElement(tag)
                    tcBorders.append(element)
    
                # looks like order of attributes is important
                for key in ["sz", "val", "color", "space", "shadow"]:
                    if key in edge_data:
                        element.set(qn('w:{}'.format(key)), str(edge_data[key]))
    

    以下为全代码。首先读取doc文件和目录,写进列表,如果文件与目录同名,则把目录下的4张图放进一个3行*2列的表格中,前两行里合并为一行,最后一行两个图,并设置框线为白色,隐藏起来,

    from docx import Document    #pip3 install python-docx 
    from docx.shared import Inches #英寸
    import os  
    
    #from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    from docx.shared import Cm #厘米
    from docx.shared import RGBColor
    
    
    from docx.enum.table import WD_TABLE_ALIGNMENT  #表格排列方式
    from docx.enum.table import WD_ALIGN_VERTICAL
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    
    from natsort import natsorted   #自然排序
    
    
    
    from docx.oxml import OxmlElement
    from docx.oxml.ns import qn
    
    def set_cell_border(cell, **kwargs):
        """
        Set cell`s border
        Usage:
        set_cell_border(
            cell,
            top={"sz": 12, "val": "single", "color": "#FF0000", "space": "0"},
            bottom={"sz": 12, "color": "#00FF00", "val": "single"},
            left={"sz": 24, "val": "dashed", "shadow": "true"},
            right={"sz": 12, "val": "dashed"},
        )
        """
        tc = cell._tc
        tcPr = tc.get_or_add_tcPr()
    
        # check for tag existnace, if none found, then create one
        tcBorders = tcPr.first_child_found_in("w:tcBorders")
        if tcBorders is None:
            tcBorders = OxmlElement('w:tcBorders')
            tcPr.append(tcBorders)
    
        # list over all available tags
        for edge in ('left', 'top', 'right', 'bottom', 'insideH', 'insideV'):
            edge_data = kwargs.get(edge)
            if edge_data:
                tag = 'w:{}'.format(edge)
    
                # check for tag existnace, if none found, then create one
                element = tcBorders.find(qn(tag))
                if element is None:
                    element = OxmlElement(tag)
                    tcBorders.append(element)
    
                # looks like order of attributes is important
                for key in ["sz", "val", "color", "space", "shadow"]:
                    if key in edge_data:
                        element.set(qn('w:{}'.format(key)), str(edge_data[key]))
    
      
    path=input('输入整理路径:  ')
    
    jpglists=[]
    if path=="":
        path=os.getcwd()
    #print(path)
    
    dirlists=[]
    for file in os.listdir(path):
        #print(file)
        filename=os.path.join(path,file)
        #print(filename)
        if os.path.isdir(filename):
            dirlists.append(filename)
    print(dirlists)
    # exit()
    for dirlist in dirlists:
        if not os.path.exists(dirlist+".doc"):
            print("目录存在,无对应文件{}  存在,忽略....".format(dirlist+".doc"))
            pass
        else:
            path1=os.path.join(path,dirlist)
            print('path1-----',path1)
            # exit()
            jpglists=[]
            for file in os.listdir(path1):
                #print(file)
                if os.path.splitext(file)[1].lower() in '.emf|.wmf|.jpg|.jpeg|.jfif|.jpe|.png|.bmp|.dib|.rle|.gif|.emz|.wmz|.tiff|.tiff|.svg|.ico':
                    jpglists.append(file)
            jpglists=natsorted(jpglists)
            #print(jpglists)
    
            
    
            document = Document(dirlist+".doc")
            rownums=int(len(jpglists)-1)
            # if len(jpglists)%2==0:
                
            # else:
            #     rownums=int(len(jpglists)/2+1)
    
            #print('设表格行',rownums)
            if len(jpglists)!=0:
            #插入表格   表格是从1,0开始,第一行就是1,列是从0开始,NND
                table = document.add_table(rows=rownums,cols=2,style ='Table Grid')
                for rownum in range(rownums):
                    table.rows[rownum].height=Cm(7)
    
                    cell=table.cell(rownum,0)
                    # if rownum==0:
                    #     cell.add_paragraph('附***照片\n')
                    p=cell.paragraphs[-1]
                    cell.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER   #水平 居中
                    cell.vertical_alignment = WD_ALIGN_VERTICAL.CENTER #竖直居中
    
    
                    if rownum==0:
                        jpghid=19.3
                    elif rownum==2:
                        jpghid=9.2
                    else:
                        jpghid=12.2
    
                    run = p.add_run()
    
                    run.add_picture(os.path.join(path1,jpglists[int(rownum)]), height=Cm(jpghid))  # ,width=Cm(jpgwid))
                    #print('写入',str(rownum),"0",os.path.join(path1,jpglists[int((rownum)*2)]))
                    set_cell_border(cell,
                        top={"sz": 12 ,"val": "single", "color": "FFFFFF", "space": "0"},
                        bottom={"sz":12, "color": "FFFFFF", "val": "single"},
                        left={"sz":12 , "val": "dashed", "color": "FFFFFF","shadow": "true"},
                        right={"sz": 10, "color": "FFFFFF","val": "dashed"},
                        insideH={"color": "FFFFFF"},)
    
                    if rownum==0:
                        cell.add_paragraph('钻孔柱状图')
                        cell.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
                    if rownum==1:
                        cell.add_paragraph('经纬度截图')
                        cell.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
                    if rownum==2:
                        cell.add_paragraph('照片1 现场照片')
                        cell.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
                        # jpghid=9.2
    
                    if rownum==rownums-1:
                        cell=table.cell(rownum,1)
                        p=cell.paragraphs[0]
                        cell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER   #水平 居中
                        cell.vertical_alignment = WD_ALIGN_VERTICAL.CENTER #竖直居中
                        run = p.add_run()
                        run.add_picture(os.path.join(path1,jpglists[int((rownum)+1)]), height=Cm(jpghid))  #width=Cm(7.02)) # ,height=Cm(3.95))
                        #print('写入',str(rownum),"1",os.path.join(path1,jpglists[int((rownum)*2)+1]))
                        cell.add_paragraph('照片2 现场照片')
                        cell.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
                        set_cell_border(cell,
                        top={"sz": 12 ,"val": "single", "color": "FFFFFF", "space": "0"},
                        bottom={"sz":12, "color": "FFFFFF", "val": "single"},
                        left={"sz":12 , "val": "dashed", "color": "FFFFFF","shadow": "true"},
                        right={"sz": 10, "color": "FFFFFF","val": "dashed"},
                        insideH={"color": "FFFFFF"},)
                    else:
                    
                        cell.merge(table.cell(rownum,1))  # 合并单元格
    
                # table.cell(r,c).vertical_alignment = WD_ALIGN_VERTICAL.CENTER
    
                # WD_ALIGN_VERTICAL.TOP|WD_ALIGN_VERTICAL.BOTTOM
    
    
    
            #table.cells0[0].add_paragraph('院(系)\n')
            #p = document.add_paragraph('This is paragraph')
    
    
            #合并表格
            #table.cell(0,0).merge(table.cell(2,2)) 
    
            #table.cols[0].weight=Cm(7.51)
    
            # for jpglist in jpglists:
            #     document.add_picture(os.path.join(path1,jpglist), width=Inches(6)) #插入图片
            document.save(dirlist+".docx") #保存文档
            print('保存文件 {}  ........'.format(dirlist+".docx"))
            print()
    input('按任意键退出。。。。。。。')        
    
    展开全文
  • 表格图片的框线识别python

    千次阅读 2019-07-31 17:45:52
    gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) # 灰度图片 ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 全局自适应阈值 dst = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_...
  • 你可以指定行数和列数来动态添加表格并且每个表格都有边框
  • 下面小编就为大家带来一篇关于表格table嵌套,边框合并问题的解决方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧
  • 代码编辑目前的架构类似mvc事件上下文类似与一种迭代器 输入如果 判断 按下回车会生成流程线
  • 重绘超级列表自定义文字颜色、表格线颜色
  • 前面学了网页表格中的单元格线条的设置方法,今天学习网页表格的边框线的设置方法。--------------------------------------------------------------------------------表格边框的显示与隐藏,是可以用frame参数来...
  • 完整版让超级列表表格那样轻松操作.rar
  • 个word文档的边框线不能保存,在网上查了一下都没有解决办法。我自己琢磨,现在问题已解决,把办法分享给大家。
  • 点击表格单行添加边框背景色,希望是你想要的
  • <table border="1" cellspacing="1" cellpadding="1" style="border: solid thin red">
  • ie8表格框线不显示问题!!!

    千次阅读 2018-05-17 14:46:36
    由于个别用户在使用ie8,所以页面必须兼容ie8,ie8大家都懂的。。。先说问题:正常浏览器:IE8:惊不惊喜、意不意外但是只需要在table上加红色这个属性,就可以解决&lt;table style="table-layout:fixed;...
  • 表格线边框重复css解决方法

    千次阅读 2017-01-17 18:28:47
    表格线常见问题: 1.表格边框与表格单元格线的重叠。[采用border-collapse:collapse解决] 2.嵌套表格与被嵌套表格边线重叠问题。[采用border-top|left|right|bottom解决] 3.嵌套表格与被嵌套表格对不齐的问题。[采用...
  • 一个用CSS设置table表格的双边框的方法,顺便记录一下。话不多说,直接代码! table { width: 400px;//表格的宽度 border-top: 1px solid #999; border-left: 1px solid #999; border-spacing: 0;/*把单元格...
  • elementui去掉表格所有边框

    千次阅读 2021-04-15 13:41:00
    /deep/.el-table { border: 0; th, tr, td{ border: 0; background-color: #fff; } &::before { height: 0px; } &::after { width: 0; } ... }
  • 众所周知,表格自带的边框很粗很难看,但是如何让表格边框变细,敬请查看源码,内附三种方法哦!
  • 因为项目需要,发现直接从word和excel复制粘贴以后,居然在禅道上表格没有边框了,故查了一下 这里从word,以及excel粘贴复制,都能直接有边框了,同时在编辑器里面新增表格,也能直接显示边框了,不需要右键-->...
  • 主要介绍了html做表格只显示表格的外边框,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 针 对 表 格 框线存 在 倾 抖 破 裂 断裂及 字符 与 表线 粘 连 等情 况 对 表格 框 线的 检 浏 方 法 进行 了 深入 研 究了 表格 框 线 检 浏 与处 理 相 结 合 的 方 法获 取 表 线。采 用在表 格框线 检 浏 中 提...
  • layui去除表格的竖线

    千次阅读 2020-12-13 17:20:29
    代码 table.render({ elem: '#user-table', url: '../../admin/data/table.json', page: true, cols: cols, skin: 'line', defaultToolbar: [{ layEvent... 渲染表格的方法中添加:skin: ‘line’ 在官网调试效果如下:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,584
精华内容 31,033
关键字:

如何制作表格框线