精华内容
下载资源
问答
  • 如何做数据分析.docx

    2019-12-16 01:10:32
    如何做数据分析:90%好评749条评价“服务周到
  • 第 第 PAGE 1 页 共 NUMPAGES 1 页 photoshop如何做文字旋转 旋转命令在photoshop中经常用到因为很多图形或者文字方向位置不合适就要用旋转接下来就是小编精心整理的一些关于photoshop如何做文字旋转的相关资料供你...
  • 如何使用Docx4J合并docx及pptx文档

    千次阅读 2017-12-15 15:55:10
    Docx4jdocx4j是一个用于处理OOXML(office open xml)文档(如docx、pptx等文档)的库,功能非常强大,其基础部分是开源的,...网络上也有其它合并的方式,但并不好用,那么使用docx4j的商业授权部分来是什么情况呢?

    Docx4j

    docx4j是一个用于处理OOXML(office open xml)文档(如docx、pptx等文档)的库,功能非常强大,其基础部分是开源的,但一些高级功能是需要商业授权,比如文档的合并等功能。

    网络上也有其它合并的方式,但并不好用,那么使用docx4j的商业授权部分来做是什么情况呢?

    下面的代码是基于docx4j企业版的试用版(Plutext-Enterprise-3.3.0.6-trial)。

    合并多个docx文档

    public class MergeWholeDocumentsUsingBlockRange {
    
        public final static String DIR_IN = System.getProperty("user.dir")+ "/src/samples/MergeDocx/resources/";
        public final static String DIR_OUT = System.getProperty("user.dir")+ "/";
    
        public static void main(String[] args) throws Exception {
    
            String[] files = {"IntegersOnly.docx", "UN-Declaration.docx" , "SolarSystem.docx"};
    
    
            List<BlockRange> blockRanges = new ArrayList<BlockRange>();
            for (int i=0 ; i< files.length; i++) {
                BlockRange block = new BlockRange(WordprocessingMLPackage.load(
                        new File(DIR_IN + files[i])));
                blockRanges.add( block );
    
                // No pages breaks
                block.setSectionBreakBefore(SectionBreakBefore.CONTINUOUS);
    
                // if you want no headers on the pages from docx2:
                block.setHeaderBehaviour(HfBehaviour.NONE);
    
                if (i==1) {
                    block.setStyleHandler(StyleHandler.RENAME_RETAIN);
                }
            }
    
            // Perform the actual merge
            DocumentBuilder documentBuilder = new DocumentBuilder();
            WordprocessingMLPackage output = documentBuilder.buildOpenDocument(blockRanges);
    
            // Save the result
            Docx4J.save(output, 
                    new File(DIR_OUT+"OUT_MergeWholeDocumentsUsingBlockRange.docx"), 
                    Docx4J.FLAG_NONE);      
    
    
        }   
    }

    上面的代码是摘自Plutext-Enterprise-3.3.0.6试用版示例代码,代码非常简单,不需要什么解释;当然除了这段标准代码外在合并时还可以设置一些特殊的参数。

    合并pptx文档

    public class MergeWholePresentations {
    
        public final static String DIR_IN = "D:/docx/";
        public final static String DIR_OUT = "D:/";
    
        public static void main(String[] args) throws Exception {
    
            long startMS = System.currentTimeMillis();
    
            String[] deck = {
                    "1.pptx" ,"2.pptx", "3.pptx",
            };
    
            PresentationBuilder builder = new PresentationBuilder();
    
            for (int i=0 ; i< deck.length; i++) {
    
                System.out.println("\n\n loading " + i + "  " + deck[i] + "\n\n");
    
                // Create a SlideRange representing the slides in this pptx
                SlideRange sr = new SlideRange(
                        (PresentationMLPackage)OpcPackage.load(new File(DIR_IN + deck[i])));
                sr.setName(i+ " " + deck[i]);  // PkgIdentifier for ListeningBean
    
                // Add the slide range to the output
                builder.addSlideRange(sr);
            }
    
            builder.getResult().save(new File("D:\\e.pptx"));
    
            // The times above don't include various things, such as Context init, and saving the final docx
            long elapsedMS = System.currentTimeMillis() - startMS;
            int secs = Math.round(elapsedMS/1000);
            System.out.println("time taken: " + secs + "secs");
        }
    }

    上面的pptx合并代码基本也是示例代码,只是作了一些简化。

    水印

    由于需要商业授权,因此上面代码合并结果都给加了水印,如下图所示:

    docx合并水印

    pttx合并水印

    其实仔细分析一下,上面合并文档中的水印都是文档中的一个元素,完全可以将其去掉,但如果文档太大,可能去除过程比较慢。

    这里涉及到ooxml的原理,本人也不是很熟悉;如果有兴趣可以去了解一下,本质上一个docx(或pptx)文档就是一堆xml文件压缩到一个文件中,这些xml中定义了该文档所有细节;其中这里的水印也是一段XML代码,我们只需要分析一下合并的结果,找到并删除即可。

    去水印

    在合并后的docx文档中,水印是一个段落结构,所以我们只需要分析所有段落找到目标段落即可。

    下面的代码可以获取文档中所有段落:

    // 递归方法,获取给定对象下所有符合条件的对象
    private static <T> List<T> getAllElementFromObject(Object obj, Class<T> toSearch) {
        List<T> result = new ArrayList<>();
        if (obj instanceof JAXBElement) obj = ((JAXBElement<?>) obj).getValue();
    
        if (obj.getClass().equals(toSearch)) {
            result.add(toSearch.cast(obj));
        } else if (obj instanceof ContentAccessor) {
            List<?> children = ((ContentAccessor) obj).getContent();
            for (Object child : children) {
                result.addAll(getAllElementFromObject(child, toSearch));
            }
        }
        return result;
    }

    调用代码:

    List<P> pList = getAllElementFromObject(documentPart, P.class);

    而在合并的pptx文档中,是每页都有水印的,因此可以分析所有幻灯片,找到目标Shape结构(pptx文档中水印是一个Shape)删除即可。

    由于涉及到商业授权,这里就不放完整代码了;不过根据这个思路,去除其实是很容易的。

    展开全文
  • 精选文档整理 文档合集 如何做 Android 应用流量测试 前言 我们经常手机应用有这样的困惑想知道应用费不费流量想知道某几款同类应用做同样的事儿哪个更省流量更深入的想知道一款应用为什么这么费流量流量都消耗在哪...
  • 一 获取测试对象也就是我们最初的工作测试需求的分析 测试需求的分析为四个部分 1 明确需求的范围 2 明确每一个功能的业务处理过程 3 不同的功能点作业务的组合 4 挖掘显式需求背后的隐式需求 二 分别阐述 1 明确...
  • MIT人工智能实验室如何做研究 人工智能实验室 AI Working Paper MIT人工智能实验室如何做研究 作者人工智能实验室全体研究生 编辑David Chapman 摘要 本文的主旨是解释如何做研究我们提供的这些建议对做研究本身阅读...
  • 如何才能一个CRM企业 无庸置疑在当今信息社会企业实施CRM是得到客户并保留客户从而提高客户忠诚度的有效手段然而是不是不论企业的现状如何都适合实施CRM企业实施CRM需要什么样的基础条件回答是肯定的实施CRM系统...
  • 如何将百度地图成mapinfo tab图层
  • 如何做数据分析挖掘以电信行业为例 2016-0 摘要本文以电信行业为例讲述如何做数据分析挖掘
  • 下面将以机器学习中的深度学习为例, 阐述如何设计数值实验达到对比说明目的。 一、无正则或简单正则类算法 1、 模型未变,算法改进类:指在已有的算法基础上步长或者方向的改变,模型未改变。 代表算法: (a) ...
  • 人工智能 时代如何做一名不可替代的教师 人工智能再一次成为人们关注的焦点根据一项报告到 2025 年 约有 25%的工作将由人工智能或是机器人所取代 因此作为教师 我 们有必要思考我们凭什么才能不被人工智能所替代要做...
  • C#如何调试代码.docx

    2020-09-11 00:25:26
    我们在程序开发时难免会遇到错误异常如何快速地找到出错的地方分析错误的原因以及找到解决问题的方案是许多初级程序员困扰 的问题这也正是经验的宝贵之处下面我将简单介绍在 Visual Studio 中调试以及一些高级的...
  • 在现在我们可以这样:add_Text([Text("NORMAL TEXT "),Text("BOLD TEXT",bold=True)]函数将确保运行在同一段落中。由于中间段落是段落的属性,因此我将其添加到外部:^{pr2}$这里有一个完整的例子来说明我的意思:...

    我在一个项目中创建了一个helper类,称为Text。我们还添加了一个将文本添加到文档中的函数。在

    现在我们可以这样做:add_Text([Text("NORMAL TEXT "),Text("BOLD TEXT",bold=True)]

    函数将确保运行在同一段落中。由于中间段落是段落的属性,因此我将其添加到外部:

    ^{pr2}$

    这里有一个完整的例子来说明我的意思:from docx import Document

    from docx.shared import Inches

    from docx.enum.text import WD_ALIGN_PARAGRAPH

    class Text:

    def __init__(self, text, bold=False, italic=False):

    self.text = text

    self.bold = bold

    self.italic = italic

    def add_text(textitems, align=False):

    p = document.add_paragraph('')

    if align == 'center':

    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

    for t in textitems:

    r = p.add_run(t.text)

    if t.bold:

    r.bold = True

    if t.italic:

    r.italic = True

    document = Document()

    document.add_heading('Document Title', 0)

    add_text([

    Text('Text ', bold=True, italic=True),

    Text('Text2', bold=False, italic=True)

    ], align='center')

    add_text([

    Text('Text ', bold=True, italic=True),

    Text('Text2', bold=False, italic=True)

    ])

    document.save('demo.docx')

    展开全文
  • csdn如何复制博客.docx

    2019-09-19 14:48:26
    CSDN是中文第一大互联网技术网站,上面有很多好的文章,有时候需要复制别人的文章到自己的文章下进行修改重新发布,这要怎样呢?csdn复制他人博客文章, 工具/原料: 一篇喜欢的博客 属于自己的csdn账号 chrome浏览器
  • 如何添加https证书.docx

    2020-03-20 12:39:15
    为了尽可能避免安全问题,公司的很多系统服务都逐步https化,虽然开始过程会遇到各种问题...在某些情况下为了不花钱买第三方信任机构颁发都证书,客户端在一些情况下也不服务器端都认证,两边只实现htts的加密通信。
  • 从“学过PMP”到“会项目管理”,PM新人如何华丽转身?看下过来人都怎么说?  项目经理进阶之路  1、管理小白,凡事亲力亲为  刚转岗项目经理,专业实力在线,凡事喜欢亲力亲为,能跟同事打成一片。但是缺乏...
  • 如何学习Windows编程 标签? Windows C++ 2013-07-20 01:57?18264人阅读? 评论(14? \o "收藏" 收藏? \o "举报" 举报 ?分类 有很多初入门的小朋友跟我说他们想学底层的技术因为觉得技术含量高所以想学Windows C++开发...
  • ERP 系统如何加强仓库管理 仓库是...为了切实改善公司仓库的管理现状提升系统运行质量笔者结合自己工作经验就 ERP系统上线初期谈谈如何加强仓库管理与同行以探讨 一 仓库的常见问题 仓库管不好一边是数以万计的物料
  • 用selenium+javaweb页面的自动化,实现切换窗口: 打开新的窗口后,selenium的焦点转移不到新开的窗口,不能在搜索框中输入值,还是聚焦在原来的窗口,需要将selenium转移到新开的窗口,继续后面的操作 本节主要...
  • 如何docx4j按照自己的模板写文件?(How to write docx documents using the custom docx tempate file by open source docx4j?). 介绍:docx4j是读写docx开源框架,使用Java实现。 docx4j可以支持读入文件,...

    如何让docx4j按照自己的模板写文件?(How to write docx documents using the custom docx  tempate file by open source docx4j?).

    介绍:docx4j是读写docx开源框架,使用Java实现。

    docx4j可以支持读入文件,支持写入文件。目前做MOOC,考虑实际考试系统的流程,需要把MOOC的试卷导出docx文件进行打印(中国特色)。

    流程:

    1)读取自己定义的一个空docx文档。

    2)按照样式写内容,如下:

    import org.docx4j.XmlUtils;
    import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
    import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
    import org.docx4j.samples.AbstractSample;
    
     class CreateWordprocessingMLDocument extends AbstractSample {
    
    	public static void main(String[] args) throws Exception {	
    				
    		boolean save = true; 		
    		WordprocessingMLPackage wordMLPackage =  
    				  WordprocessingMLPackage.load(new java.io.File("f://template.docx")); 
    		
    		MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();
    		
    		// Example 1: add text in Title style
    		mdp.addStyledParagraphOfText("heading1", "Heading1");
    		mdp.addStyledParagraphOfText("heading2", "Heading2");
    		mdp.addStyledParagraphOfText("heading3", "Heading3");
    		
    	   	// Pretty print the main document part
    		System.out.println(
    				XmlUtils.marshaltoString(mdp.getJaxbElement(), true, true) );
    		
    		// Optionally save it
    		if (save) {
    			String filename = System.getProperty("user.dir") + "/OUT.docx";
    			wordMLPackage.save(new java.io.File(filename) );
    			System.out.println("Saved " + filename);
    		}
    						
    	}
    	
    }
    

     

      遇到的问题是:docx4j写文档,格式默认非常奇怪,没有按照我的模板写出段落风格。

     通过分析读取流程,发现docx4j根本没有使用我定义的风格,doc4j读取的风格来自自己的配置文件,位置在jar内:

    docx4j-3.2.1.jar\org\docx4j\openpackaging\parts\WordprocessingML\KnownStyles.xml

     插入文本风格都来自这里。

    3)修改方法。

         (1)  把自己做的模板文件template.docx用rar工具解压开(docx是 open package file和epub类似)

         (2)  把\word\styles.xml复制并且重定名为KnownStyles.xml。

         (3) 覆盖docx4j-3.2.1.jar里面的KnownStyles.xml文件。

        (4) 特别注意:addStyledParagraphOfText("heading1", "Heading1");通过sytleid进行查找风格。docx4j的KnownStyles.xml风格ID同我们自己从\word\styles.xml的ID不一致。可以修改styles.xml保持一致,也可以不修改,使用自己的ID,如下是使用自己的ID。

       (5)   从模板中解压后的id是w:styleId="2":

     

    - <w:style w:type="paragraph" w:styleId="2">
      <w:name w:val="heading 1" /> 
      <w:basedOn w:val="1" /> 
      <w:next w:val="1" /> 
      <w:qFormat /> 
      <w:uiPriority w:val="9" /> 
    - <w:pPr>
      <w:keepNext /> 
      <w:keepLines /> 
    - <w:numPr>
      <w:ilvl w:val="0" /> 
      <w:numId w:val="1" /> 
      </w:numPr>
      <w:spacing w:before="340" w:beforeAutospacing="0" w:after="330" w:afterAutospacing="0" w:line="576" w:lineRule="auto" /> 
      <w:ind w:left="432" w:hanging="432" /> 
      <w:outlineLvl w:val="0" /> 
      </w:pPr>
    - <w:rPr>
      <w:b /> 
      <w:kern w:val="44" /> 
      <w:sz w:val="44" /> 
      </w:rPr>
      </w:style> 

     

    以后所有Heading1的风格,调用改为2.修改后的代码如下:

    import org.docx4j.XmlUtils;
    import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
    import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
    import org.docx4j.samples.AbstractSample;
    
     class CreateWordprocessingMLDocument extends AbstractSample {
    
    	public static void main(String[] args) throws Exception {	
    				
    		boolean save = true; 		
    		WordprocessingMLPackage wordMLPackage =  
    				  WordprocessingMLPackage.load(new java.io.File("f://template.docx")); 
    		
    		MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();
    		
    		// Example 1: add text in Title style
    		mdp.addStyledParagraphOfText("2", "Heading1");
    		mdp.addStyledParagraphOfText("3", "Heading2");
    		mdp.addStyledParagraphOfText("4", "Heading3");
    		
    	   	// Pretty print the main document part
    		System.out.println(
    				XmlUtils.marshaltoString(mdp.getJaxbElement(), true, true) );
    		
    		// Optionally save it
    		if (save) {
    			String filename = System.getProperty("user.dir") + "/OUT.docx";
    			wordMLPackage.save(new java.io.File(filename) );
    			System.out.println("Saved " + filename);
    		}
    						
    	}
    	
    }
    

       这样就可以使用自己的模板插入文本了,模板可以定义项目符号、页眉、页码等丰富格式等。

       疑问:doc4j既然支持读取docx文件,应该支持从docx中获取style信息;另外docx4j支持配置文件,能否更简单实现,没有去研究。

    展开全文
  • 我使用python docx从数据创建Word文档。我可以毫无问题地创建所有行和单元格,但在某些情况下,当...在我认为解决方案是附加一个表行,合并所有单元格,但我找不到文档来这样。在这是我生成docx文件的代码:class ...

    我使用python docx从数据创建Word文档。我可以毫无问题地创建所有行和单元格,但在某些情况下,当数据库中的当前记录在fieldcomment中有一些内容时,我需要添加一个新行来显示一个长内容。在

    我试图附加一个段落,但结果是注释被附加到表之后,我需要将它添加到当前表行的下面。在

    我认为解决方案是附加一个表行,合并所有单元格,但我找不到文档来这样做。在

    这是我生成docx文件的代码:class OperationDOCXView(viewsets.ViewSet):

    exclude_from_schema = True

    def list(self, request):

    from ReportsManagerApp.controllers import Operations2Controller

    self.profile_id = request.query_params['profile_id']

    self.operation_date = request.query_params['operation_date']

    self.operation_type = request.query_params['operation_type']

    self.format = request.query_params['doc_format']

    operation_report_controller = Operations2Controller(self.profile_id, self.operation_date, self.operation_type)

    context = operation_report_controller.get_context()

    if self.format == 'json':

    return Response(context)

    else:

    word_doc = self.get_operation_word_file(request, context)

    return Response("{}{}{}".format(request.get_host(), settings.MEDIA_URL, word_doc))

    def get_operation_word_file(self, request, context):

    import unicodedata

    from django.core.files import File

    from django.urls import reverse

    from docx import Document

    from docx.shared import Inches, Pt

    operation_type = {

    'arrival': 'Llegadas',

    'departure': 'Salidas',

    'hotel': 'Hotel-Hotel',

    'tour': 'Tours',

    }

    weekdays = {

    '0': 'LUNES',

    '1': 'MARTES',

    '2': 'MIÉRCOLES',

    '3': 'JUEVES',

    '4': 'VIERNES',

    '5': 'SÁBADO',

    '6': 'DOMINGO',

    }

    titles = ['Booking', 'Nombre', '#', 'Vuelo', 'Hr', 'P Up', 'Traslado', 'Circuito', 'Priv?', 'Agencia', '']

    widths = [Inches(1), Inches(2), Inches(0.5), Inches(1), Inches(1), Inches(1), Inches(2), Inches(3), Inches(0.5), Inches(3), Inches(0.5)]

    document = Document()

    section = document.sections[-1]

    section.top_margin = Inches(0.5)

    section.bottom_margin = Inches(0.5)

    section.left_margin = Inches(0.3)

    section.right_margin = Inches(0.2)

    style = document.styles['Normal']

    font = style.font

    font.name ='Arial'

    font.size = Pt(10)

    company_paragraph = document.add_heading("XXXX TTOO INC")

    company_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER

    description_paragraph = document.add_paragraph("Operación de {} del día {}".format(operation_type[self.operation_type], self.operation_date))

    description_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER

    operation_date = self.get_operation_date().date()

    operation_week_day = operation_date.weekday()

    day_paragraph = document.add_paragraph(weekdays[str(operation_week_day)])

    day_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER

    for provider_unit, transfers in context.items():

    provider_unit_paragraph = document.add_paragraph(provider_unit)

    provider_unit_paragraph.style.font.size = Pt(10)

    provider_unit_paragraph.style.font.bold = False

    table = document.add_table(rows=1, cols=11)

    hdr_cells = table.rows[0].cells

    runs = []

    for i in range(len(hdr_cells)):

    runs.append(self.get_hdr_cells_run(hdr_cells[i], titles[i]))

    for row in table.rows:

    for idx, width in enumerate(widths):

    row.cells[idx].width = width

    adults = 0

    minors = 0

    for transfer in transfers:

    # table = document.add_table(rows=1, cols=11)

    row_cells = table.add_row().cells

    row_cells[0].text = transfer['booking']

    row_cells[1].text = transfer['people']

    row_cells[2].text = transfer['pax']

    flight = transfer.get("flight","") if transfer.get("flight","") is not None else ""

    row_cells[3].text = flight

    flight_time = self.get_flight_time(flight) if flight != '' else ''

    row_cells[4].text = flight_time

    row_cells[5].text = transfer['pickup_time'].strftime('%H:%M') if transfer['pickup_time'] is not None else ''

    row_cells[6].text = transfer['place']

    row_cells[7].text = transfer['roundtrip']

    row_cells[8].text = transfer['is_private']

    row_cells[9].text = transfer['agency']

    people = transfer['pax'].split('.')

    adults = adults + int(people[0])

    minors = minors + int(people[1])

    if transfer['comment'] is not None:

    document.add_paragraph("Comentarios: {}".format(transfer['comment']))

    for row in table.rows:

    for idx, width in enumerate(widths):

    row.cells[idx].width = width

    for cell in row.cells:

    paragraphs = cell.paragraphs

    for paragraph in paragraphs:

    for run in paragraph.runs:

    font = run.font

    font.size = Pt(8)

    row_cells = table.add_row().cells

    row_cells[10].text = "{}.{}".format(adults, minors)

    current_directory = settings.MEDIA_DIR

    file_name = "Operaciones {} {}.docx".format(self.operation_type, self.operation_date)

    document.save("{}{}".format(current_directory, file_name))

    return file_name

    def get_flight_time(self, flight):

    from OperationsManagerApp.models import Flight

    operation_types = {

    'arrival': 'ARRIVAL',

    'departure': 'DEPARTURE'

    }

    operation_date = datetime.strptime(self.operation_date, '%Y-%m-%d')

    try:

    flight = Flight.objects.get(flight_type=operation_types[self.operation_type], number=flight)

    except:

    return ''

    else:

    weekday_times = {

    '0': flight.time_monday,

    '1': flight.time_tuesday,

    '2': flight.time_wednesday,

    '3': flight.time_thursday,

    '4': flight.time_friday,

    '5': flight.time_saturday,

    '6': flight.time_sunday,

    }

    weekday_time = weekday_times[str(operation_date.weekday())]

    return weekday_time.strftime('%H:%M') if weekday_time is not None else ''

    def get_hdr_cells_run(self, hdr_cells, title):

    from docx.shared import Pt

    new_run = hdr_cells.paragraphs[0].add_run(title)

    new_run.bold = True

    new_run.font.size = Pt(8)

    return new_run

    def get_operation_date(self):

    date_array = self.operation_date.split('-')

    day = int(date_array[2])

    month = int(date_array[1])

    year = int(date_array[0])

    operation_date = datetime(year, month, day)

    return operation_date

    展开全文
  • 但这种方法很“死板”,只能选取docx库中的指定样式,不到根据要求隐去表格的某条边框,要实现此功能,只能自己写。 2.python-docx库官方目前没有设置单元格边框的函数方法,可以使用下列代...
  • 我们在程序开发时难免会遇到错误异常.如何快速地找到出错的地方分析错误的原因以及找到解决问题的方案是许多初级程序员困扰的问题这也正是经验的宝贵之处.下面我将简单介绍在Visual Studio中调试以及一些高级的...
  • 如何入数值策划的门?在回答这个问题之前,我们得先回答另一个问题,那就是数值策划究竟是什么的?它的职业定位究竟如何?我曾经和不少同行探讨过这个问题,很多人都持有一种共同观点,数值策划其实也就是一个执行...
  • 常见嵌入式Linux学习和如何选择芯片 1. ARM嵌入式是学习硬件好还是学习软件好? 答 学习硬件好还是软件好如果你能精通其中的任何一个都好 学硬件绝大多数人大学毕业后都可以硬件设计这时候大家是一个差不多的 水平...
  • DocX是一款开源的C#操作word的库,使用方便,也很轻巧,比起微软的interop使用体验...刚要目录的时候,我就想DocX应该提供了这个方面的函数。于是我就在讨论区搜索,看看别人是怎么用的。我搜索了catalog; catal...
  • 如何在 C中读写 INI 文件 INI 文件就是 展名 ini 的文件在 Windows 系 中 INI 文件是很多最重要的就是 System.iniSystem32.ini 和 Win.ini 文件主要存放用 所的 以及系 的各种参数用 可以通 修改 INI 文件来改 用...
  • 用示波器环路分析需要几步docx,本文介绍了如何快速理解环路分析的意义,环路分析需要怎样设定参数,环路分析的结果该如何读取。
  • 用示波器环路分析的详细步骤docx,尽管环路分析是检测控制系统稳定性的重要手段,但是测试过程中有诸多细节需要注意。如何快速理解环路分析的意义?环路分析需要怎样设定参数?环路分析的结果如何读取?本文一一为...
  • NUMPAGES 如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件 ZIP zip可能是目前使用得最多的文档压缩格式它最大的优点就是在不同的操作系统平台比如Linux Windows以及Mac OS上使用缺点就是支持的压缩率不是很高...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 283
精华内容 113
关键字:

如何做docx