CN107562704B - 一种基于word快速生成Fastreport模板的方法 - Google Patents
一种基于word快速生成Fastreport模板的方法 Download PDFInfo
- Publication number
- CN107562704B CN107562704B CN201710645104.1A CN201710645104A CN107562704B CN 107562704 B CN107562704 B CN 107562704B CN 201710645104 A CN201710645104 A CN 201710645104A CN 107562704 B CN107562704 B CN 107562704B
- Authority
- CN
- China
- Prior art keywords
- height
- word
- paragraph
- row
- fastreport
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明涉及一种基于word快速生成Fastreport模板的方法,本方法利用将word转换成XML文件,并通过读取相关样式与主题并分析文字段落与表格,从而自动生成满足Fastreport格式的模板;本发明方法可以将word自动转化成Fastreport模板,且转换后的模板在列高上跟word里相同,克服了word不能准确将列高读取出来的问题。
Description
技术领域
本发明涉及文档处理技术领域,尤其涉及一种基于word快速生成Fastreport模板的方法。
背景技术
FastReport是一款可支持用户更改报表设计并支持查询与适应数据库变化的一款软件。但若用户直接通过FastReport画模板较为麻烦,特别是具有表格和段落等多种样式的模板,目前很多单位本身已有word模板,却要在FastReport再重新画一遍模板非常浪费时间。
发明内容
本发明为克服上述的不足之处,目的在于提供一种基于word快速生成Fastreport模板的方法,本方法利用将word转换成XML文件,并通过读取相关样式与主题并分析文字段落与表格,从而自动生成满足Fastreport格式的模板;本发明方法可以将word自动转化成Fastreport模板,且转换后的模板在列高上跟word里相同,克服了word不能准确将列高读取出来的问题。
本发明是通过以下技术方案达到上述目的:一种基于word快速生成Fastreport模板的方法,包括如下步骤:
(1)将已画好模板的word转换成XML文件,转换后可直接获取每一行对应的行宽,此行宽为word的真实行宽;word的真实列高未知;
(2)读取word的相关样式及主题定义;
(3)逐行读取word内容,判断内容格式为段落P或为表格F,若是段落P,则执行步骤(4);若是表格F,则执行步骤(5);
(4)采用段落处理方法对段落P进行处理;
(5)采用表格处理方法对表格F进行处理;
(6)将步骤(4)与步骤(5)得到的列高度相加,得到word的真实列高;
(7)对文档根据预设比例进行整体缩放,实现word转换成Fastreport。
作为优选,所述步骤(4)的段落处理方法如下:
(4.1)读取段落格式,包括段间距、段前、段后参数,用于计算段落高度;读取字体属性,包括字体、字号,用于计算文字高度;
(4.2)若文字高度大于段落高度,则段落每一列列高度h0取值为文字高度,否则取值为段落高度;
(4.3)逐字分析word相关内容,直至读取到回车符,表示段落结束;若读取的是表格里的段落,则将字符串长度除以表格行宽度,否则将字符串长度除以纸张宽度,除数用n表示:若n大于1,将n向上取整「n,否则,「n取值为1;段落的总高度为h1=h0*「n。
作为优选,所述(4.3)中的word相关内容包括文字、空格、符号。
作为优选,所述的字符串长度通过字号*字符个数计算得到。
作为优选,所述步骤(5)的表格处理方法如下:
(5.1)按行依次读取各个单元格,i(1,1),i(1,2),…i(1,b),i(2,1),i(2,2)…i(2,b)…i(a,1),i(a,2)…i(a,b),a表示该表格有a行,b表示该表格具有b列;
(5.2)对于多个单元格合并的合并项,合并项中所有的文字均属于该合并项中的第一个单元格;
(5.3)对于i(1,y)是表格的第一行,其中,1≦y≦b;画该行最上方的每个单元格的行实线;
(5.4)计算表格第x行的列高度时,不考虑合并项,直接执行步骤(4),获取非合并项的各个单元格的段落总高度,取最大的段落总高度为该行的列高k(x);
(5.5)若读取的xn行中的某个单元格属于合并项,且是合并项的最后一行的一个单元,则执行步骤(5.4),获取该行列高k(xn)为h2;假设合并项是从xm到xn行的一列单元格进行合并,执行步骤(5.4)后取合并项从第xm行的列高到第xn行的列高,并把总高度相加表示合并项所在列的高度为H=k(xm)+k(xm+1)+…+k(xn),执行步骤(4)获取合并项第一个单元格对应的段落高度为h3:若h3大于H,该最后一行的列高度取合并项h3-(H-h2),否则取h2;
(5.6)若都是合并项,返回x列默认的高度;否则,执行(5.4),获取列高度k(xn);
(5.7)对比k(xn)与默认列高度,若k(xn)大于默认列高度,则该行对应的高度为k(xn),否则为默认列高度;
(5.8)每次读取一行后对非合并项的单元和最后一行的合并项单元格画实线单元,非最后一行的合并项不画线;判断表格是否处理完毕,若是则结束,否则继续执行步骤(5.1)。
作为优选,所述在读取表格单元格内容的时需判断是否换行。作为优选,所述的预设比例优选为12:1,比例得到方法为:
(I)分别用工具测量A4纸张上word一页的长度和宽度、Fastreport一页纸张的长度和宽度;
(II)将两者进行相除,相除后word的长和宽为Fastreport长和宽的12倍,即文档从word转换成Fastreport时需要将高度与宽度缩小12倍。
本发明的有益效果在于:本发明方法可以将word自动转化成Fastreport模板,且转换后的模板在列高上跟word里相同,克服了word不能准确将列高读取出来的问题。
附图说明
图1是本发明的方法流程示意图;
图2是本发明的段落处理方法流程示意图;
图3是本发明的表格处理方法流程示意图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:
实施例:如图1所示,一种基于word快速生成Fastreport模板的方法,主要包括如下步骤:
(1)将已经画好模板的word转成XML文件;对于word,转换成XML文件后,能获取到每一行对应的行宽,且此行宽是word真实行宽,但对于列,由于单元格合并后或者单元格内有多行文字的情况下,返回的是默认的列高,所以需要计算各单元格每列真实的高度。
(2)读取word相关样式,主题定义;
(3)逐行读取word内容,判断是段落P还是表格F;
(4)若读取到的格式是段落P,则处理方法如下,如图2所示:
(4.1)读取段落格式(段间距、段前、段后等参数(计算段落高度))、字体属性(字体、字号(计算文字高度));
(4.2)若文字高度大于段落间距,则段落每一列文字高度h0取文字高度,反之,则取段落高度。
(4.3)逐字分析,word相关内容(文字、空格、符号等),以读取到回车符表示段落结束。若读取的是表格里的段落,将字符串长度除以表格行宽度,反之则除以纸张宽度,除数用n表示。字符串长度通过字号*字符个数计算得到;若n大于1,表示该段落不止只有一行,将n向上取整「n,表示总共的列数,反之则表示该段落只有一行,逐行展示所有内容,段落的总高度为h1=h0*「n。
(5)若检测到是表格,则处理方法如下,如图3所示:
(5.1)按行依次读取各个单元格,i(1,1),i(1,2),…i(1,b),i(2,1),i(2,2)…i(2,b)…i(a,1),i(a,2)…i(a,b),a表示该表格有a行,b表示该表格具有b列;
(5.2)对于多个单元格合并的合并项,合并项内所有的文字是在合并项的第一个单元格就进行读取,即合并项中所有的文字都是属于该合并项中的第一个单元格;譬如i(x,y)(1≦x≦a-n,1≦y≦b)到i(x+n,b)是三个单元格进行合并形成合并项,则该合并项的所有内容都属于i(x,y)这个单元格。
(5.3)对于i(1,y(1≦y≦b)),是表格的第一行,画该行最上方的每个单元格的行实线;
(5.4)计算表格第x行的列高度时,不考虑合并项,直接执行步骤(4),获取非合并项的各个单元格的段落总高度,取最大的段落总高度为该行的列高k(x);
(5.5)若读取的xn行中的某个单元格属于合并项,且是合并项的最后一行的一个单元,则执行步骤(5.4),获取该行列高k(xn)为h2;假设合并项是从xm到xn行的一列单元格进行合并,执行步骤(5.4)后取合并项从第xm行的列高到第xn行的列高,并把总高度相加表示合并项所在列的高度为H=k(xm)+k(xm+1)+…+k(xn),执行步骤(4)获取合并项第一个单元格对应的段落高度为h3:若h3大于H,该最后一行的列高度取合并项h3-(H-h2),否则取h2;
(5.6)若都是合并项,返回x列默认的高度;否则,执行(5.4),获取列高度k(xn);
(5.7)对比k(xn)与默认列高度,若k(xn)大于默认列高度,则该行对应的高度为k(xn),否则为默认列高度;
(5.8)每次读取一行后对非合并项的单元和最后一行的合并项单元格画实线单元,非最后一行的合并项不画线;判断表格是否处理完毕,若是则结束,否则继续执行步骤(5.1)。
在读取表格单元格内容的时候,需要判断是否换行,方法与步骤(4.3)相同。
(6)将步骤(4)与步骤(5)得到的列高度相加,得到word的真实列高;
(7)将word转换成Fastreport需要对整个文档的比例进行整体缩放,分别用工具测量A4纸张上word一页的长度和宽度、和Fastreport一页纸张的长度和宽度,并进行相除,相除后word的长和宽约是Fastreport长和宽的12倍左右,即读完的文字和表格需要等高度和等宽度的缩小12倍,完成word转换为Fastreport的目的。
以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。
Claims (5)
1.一种基于word快速生成Fastreport模板的方法,其特征在于,包括如下步骤:
(1)将已画好模板的word转换成XML文件,转换后可直接获取每一行对应的行宽,此行宽为word的真实行宽;word的真实列高未知;
(2)读取word的相关样式及主题定义;
(3)逐行读取word内容,判断内容格式为段落P或为表格F,若是段落P,则执行步骤(4);若是表格F,则执行步骤(5);
(4)采用段落处理方法对段落P进行处理,具体如下:
(4.1)读取段落格式,包括段间距、段前、段后参数,用于计算段落高度;读取字体属性,包括字体、字号,用于计算文字高度;
(4.2)若文字高度大于段落高度,则段落每一列列高度h0取值为文字高度,否则取值为段落高度;
(4.3)逐字分析word相关内容,直至读取到回车符,表示段落结束;若读取的是表格里的段落,则将字符串长度除以表格行宽度,否则将字符串长度除以纸张宽度,除数用n表示:若n大于1,将n向上取整「n,否则,「n取值为1;段落的总高度为h1=h0*「n;
(5)采用表格处理方法对表格F进行处理,具体如下:
(5.1)按行依次读取各个单元格,i(1,1),i(1,2),…i(1,b),i(2,1),i(2,2)…i(2,b)…i(a,1),i(a,2)…i(a,b),a表示该表格有a行,b表示该表格具有b列;
(5.2)对于多个单元格合并的合并项,合并项中所有的文字均属于该合并项中的第一个单元格;
(5.3)对于i(1,y)是表格的第一行,其中,1≦y≦b;画该行最上方的每个单元格的行实线;
(5.4)计算表格第x行的列高度时,不考虑合并项,直接执行步骤(4),获取非合并项的各个单元格的段落总高度,取最大的段落总高度为该行的列高k(x);
(5.5)若读取的xn行中的某个单元格属于合并项,且是合并项的最后一行的一个单元,则执行步骤(5.4),获取该行列高k(xn)为h2;假设合并项是从xm到xn行的一列单元格进行合并,执行步骤(5.4)后取合并项从第xm行的列高到第xn行的列高,并把总高度相加表示合并项所在列的高度为H=k(xm)+k(xm+1)+…+k(xn),执行步骤(4)获取合并项第一个单元格对应的段落高度为h3:若h3大于H,该最后一行的列高度取合并项h3-(H-h2),否则取h2;
(5.6)若都是合并项,返回x列默认的高度;否则,执行(5.4),获取列高度k(xn);
(5.7)对比k(xn)与默认列高度,若k(xn)大于默认列高度,则该行对应的高度为k(xn),否则为默认列高度;
(5.8)每次读取一行后对非合并项的单元和最后一行的合并项单元格画实线单元,非最后一行的合并项不画线;判断表格是否处理完毕,若是则结束,否则继续执行步骤(5.1);
(6)将步骤(4)与步骤(5)得到的列高度相加,得到word的真实列高;
(7)对文档根据预设比例进行整体缩放,实现word转换成Fastreport。
2.根据权利要求1所述的一种基于word快速生成Fastreport模板的方法,其特征在于:所述(4.3)中的word相关内容包括文字、空格、符号。
3.根据权利要求1所述的一种基于word快速生成Fastreport模板的方法,其特征在于:所述的字符串长度通过字号*字符个数计算得到。
4.根据权利要求1所述的一种基于word快速生成Fastreport模板的方法,其特征在于:所述在读取表格单元格内容的时需判断是否换行。
5.根据权利要求1所述的一种基于word快速生成Fastreport模板的方法,其特征在于:所述的预设比例为12:1,比例得到方法为:
(I)分别用工具测量A4纸张上word一页的长度和宽度、Fastreport一页纸张的长度和宽度;
(II)将两者进行相除,相除后word的长和宽为Fastreport长和宽的12倍,即文档从word转换成Fastreport时需要将高度与宽度缩小12倍。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710645104.1A CN107562704B (zh) | 2017-08-01 | 2017-08-01 | 一种基于word快速生成Fastreport模板的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710645104.1A CN107562704B (zh) | 2017-08-01 | 2017-08-01 | 一种基于word快速生成Fastreport模板的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107562704A CN107562704A (zh) | 2018-01-09 |
CN107562704B true CN107562704B (zh) | 2020-06-23 |
Family
ID=60974863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710645104.1A Active CN107562704B (zh) | 2017-08-01 | 2017-08-01 | 一种基于word快速生成Fastreport模板的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107562704B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032718B (zh) * | 2019-04-12 | 2023-04-18 | 广州广燃设计有限公司 | 一种表格转换方法、系统和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005352880A (ja) * | 2004-06-11 | 2005-12-22 | Antenna House Kk | Xml文書作成システム |
CN101968782A (zh) * | 2009-07-28 | 2011-02-09 | 中国工商银行股份有限公司 | 报表表样转换系统及方法 |
CN103198069A (zh) * | 2012-01-06 | 2013-07-10 | 株式会社理光 | 抽取关系型表格的方法和装置 |
CN105260352A (zh) * | 2015-09-20 | 2016-01-20 | 杭州电子科技大学 | 一种流式文本的自动排版方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196886B (zh) * | 2006-12-08 | 2011-01-05 | 鸿富锦精密工业(深圳)有限公司 | Word文件转换成XML文件的系统及方法 |
-
2017
- 2017-08-01 CN CN201710645104.1A patent/CN107562704B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005352880A (ja) * | 2004-06-11 | 2005-12-22 | Antenna House Kk | Xml文書作成システム |
CN101968782A (zh) * | 2009-07-28 | 2011-02-09 | 中国工商银行股份有限公司 | 报表表样转换系统及方法 |
CN103198069A (zh) * | 2012-01-06 | 2013-07-10 | 株式会社理光 | 抽取关系型表格的方法和装置 |
CN105260352A (zh) * | 2015-09-20 | 2016-01-20 | 杭州电子科技大学 | 一种流式文本的自动排版方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107562704A (zh) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101955732B1 (ko) | 캡처된 이미지 데이터를 스프레드시트와 연관시키는 방법 | |
Love et al. | Differential analysis of count data–the DESeq2 package | |
US20130174024A1 (en) | Method and device for converting document format | |
US11615635B2 (en) | Heuristic method for analyzing content of an electronic document | |
JP5664174B2 (ja) | 持ち運び可能な電子ファイルからキャラクタの外接矩形を抽出する装置及び方法 | |
CN103186511A (zh) | 汉字造字方法和设备、构造字体库的方法 | |
CN104636428A (zh) | 一种商标推荐方法及装置 | |
US8386943B2 (en) | Method for query based on layout information | |
CN107133198A (zh) | 一种文档的排版和格式转换方法 | |
GB2575580A (en) | Supporting interactive text mining process with natural language dialog | |
CN102103574B (zh) | 一种格式化输出书版小样文件内容的方法及系统 | |
Clausner et al. | Efficient ocr training data generation with aletheia | |
CN107562704B (zh) | 一种基于word快速生成Fastreport模板的方法 | |
US9886426B1 (en) | Methods and apparatus for generating an efficient SVG file | |
CN116738934B (zh) | 一种文书自动排版方法及系统 | |
CN113011129A (zh) | 一种通用doc和docx及indd文档排版引擎及方法 | |
CN110119503B (zh) | 一种基于Excel的规划项目多类数据报表与格式编辑方法 | |
CN116384356A (zh) | Ofd文件的表格行创建方法、装置、设备及介质 | |
US10482173B2 (en) | Quality distributions for automated document | |
US20150347376A1 (en) | Server-based platform for text proofreading | |
CN101944081A (zh) | 一种古琴减字谱的计算机生成、编辑方法与系统 | |
CN104317505A (zh) | 一种汉语拼音的输出系统及方法 | |
US20140115447A1 (en) | Centering Mathematical Objects in Documents | |
JP7110723B2 (ja) | データ変換装置、画像処理装置及びプログラム | |
US9075776B2 (en) | Document processing apparatus, document processing method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |