精华内容
下载资源
问答
  • Python写入word文档

    千次阅读 2019-09-25 00:48:53
    file=docx.Document()#创建内存中的word文档对象 file.add_paragraph("窗前明月光")#写入若干段落 file.add_paragraph("疑是地上霜") file.add_paragraph("举头望明月") file.add_paragraph("低头思故乡") file.save...

    目录

    1.写入简单段落

    2.插入表格并填充内容、设置对齐方式

    3.设置页面布局


    1.写入简单段落

    import docx
    file=docx.Document() #创建内存中的word文档对象
    file.add_paragraph("床前明月光") #写入若干段落
    file.add_paragraph("疑是地上霜")
    file.add_paragraph("举头望明月")
    file.add_paragraph("低头思故乡")
    file.save("E:\desktop\静夜思.docx") #保存才能看到结果

    在保存时如果遇到下面类似的错误:

    OSError: [Errno 22] Invalid argument: 'E:\\desktop\try.docx'

    尝试更改文件名,因为文件名与反斜线可能组成了转义字符。也可以在路径名前加入r来取消转义字符的作用:

    file.save(r"E:\desktop\try.docx") 

    2.插入表格并填充内容、设置对齐方式

    import docx
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.enum.table import WD_ALIGN_VERTICAL
    from docx import shared
    from docx.shared import Cm,Inches,Pt
    
    doc=docx.Document()
    table=doc.add_table(rowNums,colNums) #括号内为插入表格的行列数
    #可用len(table.rows)、len(table.columns)获取表格的行列数
    table.cell(0,0).text='1' #在第一行第一列的单元格填充字符1,表格的行列都从0开始计数
    
    #设置单元格对齐方式为水平居中|左对齐|右对齐
    table.cell(0,0).paragraphs[0].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER|WD_ALIGN_PARAGRAPH.LEFT|WD_ALIGN_PARAGRAPH.RIGHT 
     #设置单元格对齐方式为垂直居中|顶部对齐|底部对齐
    table.cell(0,0).vertical_alignment=WD_ALIGN_VERTICAL.CENTER|WD_ALIGN_VERTICAL.TOP|WD_ALIGN_VERTICAL.BOTTOM
    #以下为在单元格(0,1)中插入图片,并设置宽度为5cm(当只设置图片一个方向的尺寸(宽或高)时,另一方向会自动缩放)
    table.cell(0,1).paragraphs[-1].add_run().add_picture(r“imgPath\img.tif",width=shared.Cm(5))
    #在单元格(0,2)中插入图片,并设置高度为5 Inches:
    table.cell(0,2).paragraphs[-1].add_run().add_picture(r“imgPath\img2.tif",height=shared.Inches(2))
    
    '''此句也可用多条语句替换:
        p=table.cell(0,1).paragraphs[-1]
        run=p.add_run()
        run.add_picture(r“imgPath\img.tif",width=docx.shared.Cm(5))
    '''
    #在表格最后插入一行(最下方)和一列(最右侧),插入列时需要指定宽度(这里为5cm)
    table.add_row()
    table.add_column(Cm(5))
    
    #行列的索引
    row=table.rows[1]
    column=table.columns[1]
    #设置行高列宽
    table.rows[1].height=Cm(1)
    table.cell(1,2).width=Cm(3)    #同列单元格宽度相同,不同时以最大宽度为准
    #行的删除:可通过row._element.getparent().remove()函数实现
    row._element.getparent().remove(row._element) 
    #列的删除:列没有像行那样的remove()函数,可通过遍历列中的单元格进行删除.但表格中的cell按行存储,删除第i行的某个单元格后,每行的cell数并不变化,逻辑上第i+1行的第一个单元格会补到第i行的最后一个单元格,所以与外观不同。
    for cell in column.cells: 
        cell._element.getparent().remove(cell._element) 
    
    
    doc.save("filename.docx")

    3.设置页面布局

    页面方向有横向与竖向,新建Document时,默认的是竖向页面,要设置为我们目标的横向,需要设置三个参数,分别为section.orientation, section.page_width, section.page_height。

    注:如果只设置参数section.orientation=WD_ORIENT.LANDSCAPE,不设置另外两个参数,页面方向并不发生变化;如果设置了section.page_height,section.page_width两个参数,不设置section.orientation,页面会根据前两个参数设置页面尺寸进行调整。

    import docx
    from docx.shared import Cm,Inches,Pt
    from docx.enum.section import WD_ORIENT
    doc=docx.Document()
    sec=doc.sections #获取文档章节列表,新建的文档只有一节
    sec0=sec[0] #将第一节命名为sec0
    #新建文档默认为竖向,改为横向须设置三个参数:
    sec0.orientation=WD_ORIENT.LANDSCAPE #设置页面方向为横向须同时设置高度和宽度才有用
    sec0.page_height=Cm(21)
    sec0.page_width=Cm(29.7)
    #若只设置第一个而不设置另外两个,则页面方向不发生变化;如果只设置后两个,则页面的宽和高会改变,但仍为纵向
    
    sec0.left_margin=shared.Cm(1) #设置页边距均为1cm
    sec0.right_margin=shared.Cm(1)
    sec0.top_margin=shared.Cm(1)
    sec0.bottom_margin=shared.Cm(1)
    
    doc.save("filename.docx")

    练习:以下程序的功能是将一个文件夹中的图片以表格形式排列在word中:

    import docx
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.enum.table import WD_ALIGN_VERTICAL
    from docx.enum.section import WD_ORIENT
    from docx import shared
    from docx.shared import Cm,Inches,Pt
    import os
    doc=docx.Document()
    sec=doc.sections
    sec0=sec[0]
    sec0.orientation=WD_ORIENT.LANDSCAPE
    sec0.page_height=Cm(21)
    sec0.page_width=Cm(29.7)
    sec0.left_margin=shared.Cm(1) #设置页边距均为1cm
    sec0.right_margin=shared.Cm(1)
    sec0.top_margin=shared.Cm(1)
    sec0.bottom_margin=shared.Cm(1)
    
    imgPath=r"imgPath\\"
    imgList=[""]+ os.listdir(imgPath)
    rowNums=eval(input("请输入包含图片标题在内的行数:"))
    colNums=eval(input("请输入列数:"))
    table=doc.add_table(rowNums,colNums)
    #设置单元格对齐方式为水平居中
    table.cell(0,0).paragraphs[0].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER
     #设置单元格对齐方式为垂直居中
    table.cell(0,0).vertical_alignment=WD_ALIGN_VERTICAL.CENTER
    for rowNum in range(1,rowNums+1,2):
        for colNum in range(1,colNums+1):
                 if (rowNum-1)*colNums/2+colNum>len(imgList)-1:
                     break
                 else:
                     try:
                         imgName=imgList[int((rowNum-1)*colNums/2)+colNum]
                         total_imgPath=imgPath+imgName
                         table.cell(rowNum-1,colNum-1).paragraphs[-1].add_run().add_picture(total_imgPath,width=shared.Cm(27/colNums))
                         table.cell(rowNum,colNum-1).text=imgName
                     except: #如果有其它类型的文件则忽略
                        pass
        if (rowNum-1)*colNums/2+colNum>len(imgList)-1:
            break
    doc.save(r"e:\desktop\Picture.docx")


    ref:https://blog.csdn.net/woshisangsang/article/details/75304228

            python 取消转义字符作用

            Python-docx 读写 Word 文档:插入图片、表格,设置表格样式,章节,页眉页脚等

            https://www.jianshu.com/p/be464be64c12

            https://www.jianshu.com/p/8ce49242d96e

            https://www.cnblogs.com/aademeng/articles/13056803.html

            https://zhuanlan.zhihu.com/p/88151371

    展开全文
  • 工作中,有时候碰到需要将一个比较的word按照指定的页数分割成若干个小的word文档,下面提供分割的方法供参考: 一、按照单页拆分 1、在Word里面打开那个需要分割的文档(假设它的文件名叫做“test.doc”); 2...

    工作中,有时候碰到需要将一个比较大的word按照指定的页数分割成若干个小的word文档,下面提供分割的方法供参考:

    一、按照单页拆分

    1、在Word里面打开那个需要分割的文档(假设它的文件名叫做“test.doc”);

    2、键入ALT+F11打开VBA编辑器,选择菜单“插入-模块”,或者键入ALT+F8打开宏命令窗口,或者点文档内上面的“工具”→“宏”→“宏”→找到这个宏→“运行”即可;

    3、粘贴下面的代码:

    Option Explicit

    Sub SplitPagesAsDocuments()

    Dim oSrcDoc As Document, oNewDoc As Document

    Dim strSrcName As String, strNewName As String

    Dim oRange As Range

    Dim nIndex As Integer

    Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set oSrcDoc = ActiveDocument

    Set oRange = oSrcDoc.Content

    oRange.Collapse wdCollapseStart

    oRange.Select

    For nIndex = 1 To ActiveDocument.Content.Information(wdNumberOfPagesInDocument)

    oSrcDoc.Bookmarks("\page").Range.Copy

    oSrcDoc.Windows(1).Activate

    Application.Browser.Target = wdBrowsePage

    Application.Browser.Next

    strSrcName = oSrcDoc.FullName

    strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _
    fso.GetBaseName(strSrcName) & "_" & nIndex & "." & fso.GetExtensionName(strSrcName))
    Set oNewDoc = Documents.Add

    Selection.Paste

    oNewDoc.SaveAs strNewName

    oNewDoc.Close False

    Next

    Set oNewDoc = Nothing

    Set oRange = Nothing

    Set oSrcDoc = Nothing

    Set fso = Nothing

    MsgBox "结束!"

    End Sub

    4、键入F5运行,看到“完成!”结束。

    5、检查当前文档所在路径下是否生成若干名为“原始文档_n.doc”(n代表其对应原始文档中的第几页)的文档,检查它们的内容是否就对应于原始文档每个页面的内容。

     

    二、按指定页动态拆分

     上述方法是按单页拆分的,如果想按照指定页数拆分,可使用下面的代码,其它步骤和上述按单页拆分方案相同。

    代码如下:

    Option Explicit

    Sub DynamicSplitPagesAsDocuments()

    Dim oSrcDoc As Document, oNewDoc As Document
    Dim strSrcName As String, strNewName As String
    Dim oRange As Range
    Dim nIndex As Integer, nSubIndex As Integer, nTotalPages As Integer, nBound As Integer
    Dim fso As Object

    Const nSteps = 3   //这里可以指定需要拆分的页数,如这里表示按照每3页拆分成一个小文档

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set oSrcDoc = ActiveDocument
    Set oRange = oSrcDoc.Content

    nTotalPages = ActiveDocument.Content.Information(wdNumberOfPagesInDocument)
    oRange.Collapse wdCollapseStart
    oRange.Select
    For nIndex = 1 To nTotalPages Step nSteps
    Set oNewDoc = Documents.Add
    If nIndex + nSteps > nTotalPages Then
    nBound = nTotalPages
    Else
    nBound = nIndex + nSteps - 1
    End If
    For nSubIndex = nIndex To nBound
    oSrcDoc.Activate
    oSrcDoc.Bookmarks("\page").Range.Copy
    oSrcDoc.Windows(1).Activate
    Application.Browser.Target = wdBrowsePage
    Application.Browser.Next

    oNewDoc.Activate
    oNewDoc.Windows(1).Selection.Paste
    Next nSubIndex
    strSrcName = oSrcDoc.FullName
    strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _
    fso.GetBaseName(strSrcName) & "_" & (nIndex \ nSteps) & "." & fso.GetExtensionName(strSrcName))
    oNewDoc.SaveAs strNewName
    oNewDoc.Close False
    Next nIndex
    Set oNewDoc = Nothing
    Set oRange = Nothing
    Set oSrcDoc = Nothing
    Set fso = Nothing
    MsgBox "结束!"

    End Sub

     

    注意:

    如文档中有分节符分解后的文档会出现空白页,如要分解后不出现空白页,需要把文档中的分节符全部删除。

    分节符若全部替换,要注意替换后文档可能会出现排版混乱,这则需要自己手动排版了。

    分节符是指为表示节的结尾插入的标记。分节符包含节的格式设置元素,如页边距、页面的方向、页眉和页脚,以及页码的顺序。分节符用一条横贯屏幕的虚双线表示。

     

    删除分节符的方法:

    试着按住shift键,然后点击鼠标左键,然后将显示出来的分节符删掉即可。

     

    分节符和分页符的区别:

    分页符只是分页,前后还是同一节;
    分节符是分节,可以同一页中不同节,也可以分节的同时下一页。
    两者用法的最大区别在于页眉页脚与页面设置,比如:
    1、文档编排中,某几页需要横排,或者需要不同的纸张、页边距等,那么将这几页单独设为一节,与前后内容不同节;
    2、文档编排中,首页、目录等的页眉页脚、页码与正文部分需要不同,那么将首页、目录等作为单独的节;
    3、如果前后内容的页面编排方式与页眉页脚都一样,只是需要新的一页开始新的一章,那么一般用分页符即可,当然用分节符(下一页)也行。

     

    转载于:https://www.cnblogs.com/cookiewu/p/9845472.html

    展开全文
  • word文档中打印大号字

    千次阅读 2012-12-19 15:52:57
    word文档中打印大号字  设置之前可以先将页面设置为横向。文件à页面设置à横向 一 、使用快捷键操作字体(比较简单实用) 按快捷键 'Ctrl'+'Shift'+'>' 可以将所选择的文字的字号不断变,按快捷键 'Ctrl'...

    word文档中打印大号字  

    设置之前可以先将页面设置为横向。文件à页面设置à横向

     使用快捷键操作字体(比较简单实用)

    按快捷键 'Ctrl'+'Shift'+'>' 可以将所选择的文字的字号不断变大,按快捷键 'Ctrl'+'Shift'+'<' 可以将所选择的文字的字号不断变小。然后打印。字的大小取决于纸张的大小。
    另法:'Ctrl'+'[' 字体变小,'Ctrl'+']' 字体变大,变化幅度比较小,可以微调字的大小。

     

    插入横向文本框

    插入à文本框à横向。然后输入文字,按照第一种方法进行文字的放大,可以对文本框也进行放大。 

     

    三、使用艺术字

       插入à图片à艺术字,直接选择第一种,然后设置填充颜色为黑色就可以了。也第二种方法类似可拉动艺术字边框进行缩放。

     

    四、设置页面大小和文字大小(不好判断)

    1、设置页面大小

    先选择Word“文件”→“页面设置”命令 打开Word“页面设置”对话框 选择“纸张”标签 并选择“纸型”为“自定义大小” 同时设置 下纸张 大小 如宽55厘米、高55厘米等,按下“确定”按钮 此时Word会提示“你有 处或多处页边距设在了页面的外 选择‘调整’按钮可以增加页边距” 我们选择“忽略”按钮

    2、设置文字大小

    在页面直接输入需要打印 汉字内容 然后选中它们 选择“格式”菜单下 “字体”命令 在打开 “字体”对话框中选中“字号”输入框双击使字号内容反显 然后输入字号大小 输入字号 大小在1磅到1638磅的间 般纵向A4幅面单字大小为500磅 纵向A3幅面单字大小为750磅 注意输入字号后 定不要忘了回车 否则字号设置不起作用。 最后单击“确定”按钮保存 当然 我们也可以在文字“字体”属性中设置其为空心字体以节省墨粉

    3、观看效果

    此时我们可以看到Word窗口中汉字明显大了 为了取得更好 效果 我们单击工具栏上 比例缩放下拉框 选择 个合适 比例 就可以看到整体效果了

    4、打印输出

    给打印机装好纸 单击“打印输出”按钮后即可把当前大字打印出来了

     

    展开全文
  • 这个时候,SA systeam admin 就会开始直接让开发改代码了,比如增加一个入参,入参名进行一些变化,比如比天性进行变化,比如字符串类型修改最大长度,etc. 你会说,不行啊,要走变更流程啊,先更新接口说明文档啊 ...

    一般的开发工作,尤其是API接口的开发工作,首先要有开发文档,接口说明文档

    ok,后来开发完毕了

    和页面联调,或者是和第三方联调的时候,

    这个时候,SA systeam admin 就会开始直接让开发改代码了,比如增加一个入参,入参名进行一些变化,比如比天性进行变化,比如字符串类型修改最大长度,etc.

    你会说,不行啊,要走变更流程啊,先更新接口说明文档啊

    这个时候,就不是现有鸡蛋后有鸡的模式了

    变成了先有鸡之后进行下蛋的模式

     

     

     

     

    http://www.cnblogs.com/jmcui/p/8298823.htm

    Swagger文档转Word 文档

     

    原文地址链接如上,springmvc 开发,创建了三个对象, 对swagger的json文件进行解析和拼接,成为API文档

     

    可以自己有空的时候试一下,用springboot,然后页面用thymeleaf取出拼接成word格式

     

     

    主要实现思想

    添加一个Request对象,捕获请求的一些信息

     

    public class Request {
    
        private String name;   //参数名
        private String type;   //数据类型
        private String paramType;    //参数类型  path,
        private Boolean require;    //是否必填
        private String remark;    //说明
        
        //省略了getters and setters
    }

     

    添加一个Response对象,捕获返回体中的一些信息

    public class Response {
    
        private String description;   //返回参数
        private String name;   //参数名
        private String remark;   //说明
    
    
        public  Response(){    }
    
        public Response(String description, String name, String remark) {
            this.description = description;
            this.name = name;
            this.remark = remark;
        }
    
        //省略了getters and setters
    }

    Table是用来解析Json,捕获Json中的请求和返回体,接收一些接口描述信息

    public class Table {
        
        private String title;    //大标题
        private String tag;    //小标题
        private String url;   //url
        private String description;   //描述
        private String requestForm;  //请求参数格式
        private String responseForm;   //响应参数格式
        private String requestType;   //请求方式
        private List<Request> requestList;   //请求体
        private List<Response> responseList;   //返回体
        private String requestParam;    //请求参数
        private String responseParam;   //回参数
    
    //省略了getters and setters
    }

     

     

    
    
    public interface TableService {
    
        List<Table> tableList();
    }
    @Service
    public class TableServiceImpl implements TableService {
    
        @Autowired
        private RestTemplate restTemplate;
    
        @Value("${swaggerUrl}")
        private String swaggerUrl;
    
        @Override
        public List<Table> tableList() {
            String json = restTemplate.getForObject(swaggerUrl, String.class);
    
            Map<String, Object> map = new HashMap<>();
            ObjectMapper mapper = new ObjectMapper();
            mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
            mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
            mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
    
            try {
                // convert JSON string to Map
                map = mapper.readValue(json, new TypeReference<HashMap<String,Object>>(){});
            } catch (Exception e) {
                LoggerFactory.getLogger(WordService.class).error("parse error", e);
            }
    
            List<Table> list = new LinkedList();
            //得到host,并添加上http 或 https
            String host = StringUtils.substringBefore(swaggerUrl, ":") + String.valueOf(map.get("host"));
            //解析paths
            LinkedHashMap<String, LinkedHashMap> paths = (LinkedHashMap) map.get("paths");
            if (paths != null) {
                Iterator<Map.Entry<String, LinkedHashMap>> it = paths.entrySet().iterator();
                while (it.hasNext()) {
                    Table table = new Table();
                    List<Request> requestList = new LinkedList<>();
                    List<Response> responseList = new LinkedList<>();
                    // 请求参数格式,类似于 multipart/form-data
                    String requestForm = "";
                    // 请求参数格式,类似于 multipart/form-data
                    String responseForm = "";
                    // 请求方式,类似为 get,post,delete,put 这样
                    String requestType = "";
                    String url; // 请求路径
                    String title; // 大标题(类说明)
                    String tag; // 小标题 (方法说明)
                    String description; //接口描述
    
                    Map.Entry<String, LinkedHashMap> path = it.next();
                    url = path.getKey();
    
                    LinkedHashMap<String, LinkedHashMap> value = path.getValue();
                    Set<String> requestTypes = value.keySet();
                    for (String str : requestTypes) {
                        requestType += str + ",";
                    }
    
                    Iterator<Map.Entry<String, LinkedHashMap>> it2 = value.entrySet().iterator();
                    // 不管有几种请求方式,都只解析第一种
                    Map.Entry<String, LinkedHashMap> firstRequestType = it2.next();
                    LinkedHashMap content = firstRequestType.getValue();
                    title = String.valueOf(((List) content.get("tags")).get(0));
                    description = String.valueOf(content.get("description"));
                    List<String> consumes = (List) content.get("consumes");
                    if (consumes != null && consumes.size() > 0) {
                        for (String consume : consumes) {
                            requestForm += consume + ",";
                        }
                    }
                    List<String> produces = (List) content.get("produces");
                    if (produces != null && produces.size() > 0) {
                        for (String produce : produces) {
                            responseForm += produce + ",";
                        }
                    }
    
                    tag = String.valueOf(content.get("summary"));
                    //请求体
                    List parameters = (ArrayList) content.get("parameters");
                    if (parameters != null && parameters.size() > 0) {
                        for (int i = 0; i < parameters.size(); i++) {
                            Request request = new Request();
                            LinkedHashMap<String, Object> param = (LinkedHashMap) parameters.get(i);
                            request.setName(String.valueOf(param.get("name")));
                            request.setType(param.get("type") == null ? "Object" : param.get("type").toString());
                            request.setParamType(String.valueOf(param.get("in")));
                            request.setRequire((Boolean) param.get("required"));
                            request.setRemark(String.valueOf(param.get("description")));
                            requestList.add(request);
                        }
                    }
                    //返回体
                    LinkedHashMap<String, Object> responses = (LinkedHashMap) content.get("responses");
                    Iterator<Map.Entry<String, Object>> it3 = responses.entrySet().iterator();
                    while (it3.hasNext()) {
                        Response response = new Response();
                        Map.Entry<String, Object> entry = it3.next();
                        // 状态码 200 201 401 403 404 这样
                        String statusCode = entry.getKey();
                        LinkedHashMap<String, Object> statusCodeInfo = (LinkedHashMap) entry.getValue();
                        String statusDescription = (String) statusCodeInfo.get("description");
                        response.setName(statusCode);
                        response.setDescription(statusDescription);
                        response.setRemark(null);
                        responseList.add(response);
                    }
    
                    // 模拟一次HTTP请求,封装请求体和返回体
                    // 得到请求方式
                    String restType = firstRequestType.getKey();
                    Map<String, Object> paramMap = ParamMap(requestList);
                    String buildUrl = buildUrl(host + url, requestList);
    
                    //封装Table
                    table.setTitle(title);
                    table.setUrl(url);
                    table.setTag(tag);
                    table.setDescription(description);
                    table.setRequestForm(StringUtils.removeEnd(requestForm, ","));
                    table.setResponseForm(StringUtils.removeEnd(responseForm, ","));
                    table.setRequestType(StringUtils.removeEnd(requestType, ","));
                    table.setRequestList(requestList);
                    table.setResponseList(responseList);
                    table.setRequestParam(String.valueOf(paramMap));
                    table.setResponseParam(doRestRequest(restType, buildUrl, paramMap));
                    list.add(table);
                }
            }
            System.out.println("===============================");
            System.out.println(list);
            return list;
    
        }
    
        /**
         * 重新构建url
         *
         * @param url
         * @param requestList
         * @return etc:http://localhost:8080/rest/delete?uuid={uuid}
         */
        private String buildUrl(String url, List<Request> requestList) {
            String param = "";
            if (requestList != null && requestList.size() > 0) {
                for (Request request : requestList) {
                    String name = request.getName();
                    param += name + "={" + name + "}&";
                }
            }
            if (StringUtils.isNotEmpty(param)) {
                url += "?" + StringUtils.removeEnd(param, "&");
            }
            return url;
    
        }
    
        /**
         * 发送一个 Restful 请求
         *
         * @param restType "get", "head", "post", "put", "delete", "options", "patch"
         * @param url      资源地址
         * @param paramMap 参数
         * @return
         */
        private String doRestRequest(String restType, String url, Map<String, Object> paramMap) {
            Object object = null;
            try {
                switch (restType) {
                    case "get":
                        object = restTemplate.getForObject(url, Object.class, paramMap);
                        break;
                    case "post":
                        object = restTemplate.postForObject(url, null, Object.class, paramMap);
                        break;
                    case "put":
                        restTemplate.put(url, null, paramMap);
                        break;
                    case "head":
                        HttpHeaders httpHeaders = restTemplate.headForHeaders(url, paramMap);
                        return String.valueOf(httpHeaders);
                    case "delete":
                        restTemplate.delete(url, paramMap);
                        break;
                    case "options":
                        Set<HttpMethod> httpMethods = restTemplate.optionsForAllow(url, paramMap);
                        return String.valueOf(httpMethods);
                    case "patch":
                        object = restTemplate.execute(url, HttpMethod.PATCH, null, null, paramMap);
                        break;
                    case "trace":
                        object = restTemplate.execute(url, HttpMethod.TRACE, null, null, paramMap);
                        break;
                    default:
                        break;
                }
            } catch (Exception ex) {
                // 无法使用 restTemplate 发送的请求,返回""
                // ex.printStackTrace();
                return "";
            }
            return String.valueOf(object);
        }
    
        /**
         * 封装post请求体
         *
         * @param list
         * @return
         */
        private Map<String, Object> ParamMap(List<Request> list) {
            Map<String, Object> map = new HashMap<>(8);
            if (list != null && list.size() > 0) {
                for (Request request : list) {
                    String name = request.getName();
                    String type = request.getType();
                    switch (type) {
                        case "string":
                            map.put(name, "string");
                            break;
                        case "integer":
                            map.put(name, 0);
                            break;
                        case "number":
                            map.put(name, 0.0);
                            break;
                        case "boolean":
                            map.put(name, true);
                        default:
                            map.put(name, null);
                            break;
                    }
                }
            }
            return map;
        }
    }

    可以是我用swagger的时候,对入参描述的不准,目前我还不能捕获到一个对象,比如json请求中的字段,如果要逐个手动,真心好类

     而作者提供的截图中,返回参数是一个一个字段,罗列地很清楚

     

     

    转载于:https://www.cnblogs.com/qianjinyan/p/10823483.html

    展开全文
  • 实例说明 ...在实例中我们可以使用C#方便的向指定的Word文档中插入表格,并在表格中添加相应信息。实例运行效果如图1所示。 图1 在Word文档中绘制表格 实例运行中单击“创建Word文档”按钮,会根据...
  • python实现word文档批量转成自定义格式的excel文档

    千次阅读 多人点赞 2020-02-18 02:27:29
    最近在开发一个答题类的小程序,到了录入试题进行测试的时候了,发现一个问题,试题几乎都是word文档格式的...但word文档是这种结构,如果按照网上通用的方式去转,基本上你得到的结果就是一坨文字都在一格里,根...
  • java解析word文档

    千次阅读 2009-01-09 13:37:00
    java解析word文档,网上找的,都是转完了,就没事了。可是我们项目需要转换后,提取里面的数据,并存入到数据库,搞了半天也不能提取数据,先把问题放在这里,先看看word文档片段,前言,附录就不写了,只写两段,...
  • 教你怎么使用Python对word文档进行操作

    万次阅读 多人点赞 2019-09-18 21:56:16
    说白了,python就相当于windows操作系统,QQ就是跑在windows操作系统上的软件,QQ最大的作用是可以去聊天,说话。 在这里python-docx就相当于这里的qq 它主要的功能是对docx文件进行操作,管理等.(个...
  • js 导出word 文档 doc docx

    万次阅读 2019-11-11 14:32:27
    在做项目时,要将富文本编辑器,或是html内容 导出为word。 先引入文件保存js ...docx体积更小,而且word2007也可以打开 1.引用插件html-docx.js <script src="html-docx.js"></script>...
  • 附件的WORD文档

    千次阅读 2012-08-14 16:36:28
    2013年北美自动车床/精密加工零组件机械展   展会时间:2013年4月16至18日 ... PMTS是两年一届的北美精密机械及零部件制造商业内最大也是唯一的展览,是独一无二的国际精密机械产品及零部件制造商、供应商和
  • Python-docx 模块读写 Word 文档基础(一):创建文档、段落格式、字体格式设置方法前言:1、创建 Word 文档及基础用法:2、段落格式设置:3、字体格式设置:结尾:【Python与Word文档】专栏 前言: 从这篇博客开始...
  • 在线查看word文档

    千次阅读 2012-07-28 22:46:17
    上传 Word文档将生成在线查看文档! 确定上传" OnClick="btnSubmit_Click" /> 查看生成文档 >     后台代码:   protected void btnSubmit_Click(object sender, ...
  • 介绍一个用 Python docx和xlrd模块,对已有的Word模板与需求,对模板文件进行修改,然后批量生成Word文档的实例。
  • 用 Python 操作 Word 文档

    千次阅读 2019-07-23 08:30:00
    图片来源于网络♚作者:贠云龙Blog:zhihu.com/people/yunlongyun本文主要讲解python中操作word的思路。一、Hello,world!使...
  • CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office Word 文档.doc"的文件,再新建一个,则名为"新建 Microsoft Office Word 文档(2).doc",再新建,便是"新建 Microsoft Office Word 文档(3)....
  • 找回Word未保存文档

    千次阅读 2018-05-27 03:31:36
    开始 → 运行 → %appdata%\microsoft\Word → 确定;在打开的目录下,找到与未保存文档同名...将其重命名为 xxx.doc 文档文件,然后打开即可最大限度的找回未保存的文档。 如果这里都没有恢复到,那就没有办法了。...
  • 如何将PDF转为可编辑的Word文档

    千次阅读 2016-07-20 11:40:04
    在使用PDF文档内容的时候,通常都会将pdf先转换成word格式,因为word文档的内容易用编辑,使用起来也方便。... 如果要将PDF文件转换成为可以编辑的word文档,首先PDF文件得是可以编辑的文件,扫描的pd
  • Java用iText写word文档

    千次阅读 2015-01-15 09:38:44
    Java用iText写word文档,可直接输出到本地磁盘或者输出到浏览器并下载。
  • 一、word模板准备 模板的准备至关重要,而其中更重要的是模板中书签的设置命名,因为接下来的程序代码中,程序就是根据书签的名字,来定位word文档中的位置,从而进行数据的插入修改 当设计好表格,并且设计好书签...
  • 大家可以通过网络下载拥有一款功能强大的MiniTool数据恢复工具,然后利用其强大的丢失文件恢复功能,即可轻松完成被删除Word文档恢复工作,从而达到在Windows 7上最大限度的恢复被删除文档的目的。 怎样使用...
  • Java语言结合Freemaker技术导出Word文档

    千次阅读 2013-02-20 11:09:36
    时候需要在项目中生成Word文档,Java语言结合Freemaker技术导出Word文档我觉得这种方式不错。 1.先看代码 主程序代码如下: package com; import java.io.BufferedWriter; import java.io.File; import ...
  • 开始写上传文档并读取的的时候是调用com组件,中间遇到了很坑,总结一下//传文档所在路径 返回文档内容 public string Doc2Text(string docFileName) { //实例化COM Microsoft.Office.Interop.Word....
  • 批量打印Word文档并记录(一)

    千次阅读 2016-11-19 18:52:39
    批量打印Word文档并记录之添加需要打印的Word文档信息到listview里  写这款小软件的原因:寝室自从买了一台打印机后来寝室打印的人越来越,所以想写一款批量打印并记录(没记录收钱有点麻烦)的软件。 才步入大二...
  • lotus表单转换成word文档 表单如何转换成Word文档
  • Word文档中的指定内容进行替换

    千次阅读 2018-05-12 09:53:42
    不知大家在对Word操作时,有没有遇到需要对指定内容进行替换这种需求。前几天公司有个需求,就是对PDF邀请函的姓名那部分内容进行替换,因为本人以前对Word的书签有过操作,所以思路就是通过将这部分内容设定为书签...
  • 日常工作中,你是否遇到过这样的场景,领导发来一份 Word 文档,要求你将文档中的图片存储到一个文件夹内,并且还要将图片都改成 .jpg 或者 .png,你会怎么办?你是不是一边内心崩溃,一边开始一张张的 另存为。今天...
  • 最大的挑战是必须支持现有Word文档。 相同格式且带个数据块的Word文档有成千上万。该文档格式并不是设计来被另一个系统所读取的。这意味着,没有书签、合并字段、从标准指令识别实际数据的方式等。还好,所有输入...
  • 一、首先下载相对应的jar包:freemarker.jar;...二、自定义Word模板,另存为.XML文件,打开进行相对应的编辑; Word模板如下图: 另存为.XML文件如下图: 在线格式化工具:http://tool.oschina.net/codef
  • 1.Spire.Doc是成都冰蓝科技有限公司开发的一款简单易用、功能强大的Word文档编辑工具,有免费版本和收费版本,以下演示基于免费版本 2.相比较于市面上的其他类似工具,其最大的优点是:基于完全Jav...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,263
精华内容 28,905
关键字:

word文档最大可以多大