精华内容
参与话题
问答
  • POI导出word

    千次阅读 2019-01-03 13:45:05
    poi导出word 最近有一个项目需要用做导出word的功能,刚开始用的是poi,开始写的时候才发现poi对于word的支持真的是少的可怜,还是推荐大家用xml或者别的来做导出word,本次功能分两篇博客展现如果用需要用poi的...

    poi导出word

    最近有一个项目需要用做导出word的功能,刚开始用的是poi,开始写的时候才发现poi对于word的支持真的是少的可怜,还是推荐大家用xml或者别的来做导出word,本次功能分两篇博客展现如果用需要用poi的可以看看这篇博客,欢迎补充。

    1. 替换word表格参数
    2. 动态生成行

    替换word模板参数 

    根据word模板导出word

    public class WordUtil {
     /**
         * 替换所有段落中的标记
         *
         * @param xwpfParagraphList
         * @param params
         */
        public static void replaceInAllParagraphs(List<XWPFParagraph> xwpfParagraphList, Map<String, String> params) {
            for (XWPFParagraph paragraph : xwpfParagraphList) {
                if (paragraph.getText() == null || paragraph.getText().equals("")) continue;
                for (String key : params.keySet()) {
                    if (paragraph.getText().contains(key)) {
                        replaceInParagraph(paragraph, key, params.get(key));
                    }
                }
            }
        }
    
        /**
         * 替换段落中的字符串
         *
         * @param xwpfParagraph
         * @param oldString
         * @param newString
         */
        public static void replaceInParagraph(XWPFParagraph xwpfParagraph, String oldString, String newString) {
            Map<String, Integer> pos_map = findSubRunPosInParagraph(xwpfParagraph, oldString);
            if (pos_map != null) {
                List<XWPFRun> runs = xwpfParagraph.getRuns();
                XWPFRun modelRun = runs.get(pos_map.get("end_pos"));
                XWPFRun xwpfRun = xwpfParagraph.insertNewRun(pos_map.get("end_pos") + 1);
                xwpfRun.setText(newString);
                if (modelRun.getFontSize() != -1)
                    xwpfRun.setFontSize(modelRun.getFontSize());//默认值是五号字体,但五号字体getFontSize()时,返回-1
                xwpfRun.setFontFamily(modelRun.getFontFamily());
                for (int i = pos_map.get("end_pos"); i >= pos_map.get("start_pos"); i--) {
                    xwpfParagraph.removeRun(i);
                }
            }
        }
    
        /**
         * 找到段落中子串的起始XWPFRun下标和终止XWPFRun的下标
         *
         * @param xwpfParagraph
         * @param substring
         * @return
         */
        public static Map<String, Integer> findSubRunPosInParagraph(XWPFParagraph xwpfParagraph, String substring) {
            List<XWPFRun> runs = xwpfParagraph.getRuns();
            int start_pos = 0;
            int end_pos = 0;
            String subtemp = "";
            for (int i = 0; i < runs.size(); i++) {
                subtemp = "";
                start_pos = i;
                for (int j = i; j < runs.size(); j++) {
                    if (runs.get(j).getText(runs.get(j).getTextPosition()) == null) continue;
                    subtemp += runs.get(j).getText(runs.get(j).getTextPosition());
                    if (subtemp.equals(substring)) {
                        end_pos = j;
                        Map<String, Integer> map = new HashMap<>();
                        map.put("start_pos", start_pos);
                        map.put("end_pos", end_pos);
                        return map;
                    }
                }
            }
            return null;
        }
    
        /**
         * 替换所有的表格
         *
         * @param xwpfTableList
         * @param params
         */
        public static void replaceInTables(List<XWPFTable> xwpfTableList, Map<String, String> params) {
            for (XWPFTable table : xwpfTableList) {
                replaceInTable(table, params);
            }
        }
    
        /**
         * 替换一个表格中的所有行
         *
         * @param xwpfTable
         * @param params
         */
        public static void replaceInTable(XWPFTable xwpfTable, Map<String, String> params) {
            List<XWPFTableRow> rows = xwpfTable.getRows();
            replaceInRows(rows, params);
        }
    
        /**
         * 替换表格中的一行
         *
         * @param rows
         * @param params
         */
        public static void replaceInRows(List<XWPFTableRow> rows, Map<String, String> params) {
            for (int i = 0; i < rows.size(); i++) {
                XWPFTableRow row = rows.get(i);
                replaceInCells(row.getTableCells(), params);
            }
        }
    
        /**
         * 替换一行中所有的单元格
         *
         * @param xwpfTableCellList
         * @param params
         */
        public static void replaceInCells(List<XWPFTableCell> xwpfTableCellList, Map<String, String> params) {
            for (XWPFTableCell cell : xwpfTableCellList) {
                replaceInCell(cell, params);
            }
        }
    
        /**
         * 替换表格中每一行中的每一个单元格中的所有段落
         *
         * @param cell
         * @param params
         */
        public static void replaceInCell(XWPFTableCell cell, Map<String, String> params) {
            List<XWPFParagraph> cellParagraphs = cell.getParagraphs();
            replaceInAllParagraphs(cellParagraphs, params);
         }
        }

    下面是调用方法
    因为map泛型规定了String,所以非String类型的参数都要用""串接起来

    public static void main(String[] args) {
            Map<String, String> params = new HashMap<>();
            params.put("${name}", "请假");
            params.put("${user}", "邹某");
            params.put("${time}", "" + new SimpleDateFormat("yyyy-MM-dd hh:mm").format(new Date()) + "");
            params.put("${type}", "产假");
            params.put("${project}", "金融");
            params.put("${startTime}", "2018-12-05 12:00");
            params.put("${endTime}", "2018-12-05 12:00");
            params.put("${dept}", "开发部");
            params.put("${numDay}", "1");
            params.put("${remark}", "不想上班");
            String filepath = "E:\\test.docx";
            String destpath = "E:\\test3.docx";
            WordUtil wordUtil = new WordUtil();
          WordUtil wordUtil = new WordUtil();
            try {
                OPCPackage pack = POIXMLDocument.openPackage(filepath);//读取模板文件
                XWPFDocument document = new XWPFDocument(pack);//创建word文件并将模板导入
                //对段落中的标记进行替换
            	List<XWPFParagraph> parasList = xwpfDocument.getParagraphs();
            	replaceInAllParagraphs(parasList, map);
                //表格标记替换
                List<XWPFTable> tables = document.getTables();
                wordUtil.replaceInTables(tables, params);
                FileOutputStream  outStream = new FileOutputStream(destpath);
                document.write(outStream);
                outStream.flush();
                outStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    å¨è¿éæå¥å¾çæè¿°

    å¨è¿éæå¥å¾çæè¿°

    以上就是poi替换word模板参数的所有内容,欢迎补充

     

    展开全文
  • poi导出word

    2019-10-02 02:21:09
    最近做了个poi导出word的功能 下面是代码: 一个可以参考的例子: 1 package com.lzb.crm.web; 2 3 import java.io.FileOutputStream; 4 import java.math.BigInteger; 5 import java.util.List; 6 ...

    最近做了个poi导出word的功能

    下面是代码:

    一个可以参考的例子:

      1 package com.lzb.crm.web;
      2 
      3 import java.io.FileOutputStream;
      4 import java.math.BigInteger;
      5 import java.util.List;
      6 
      7 import org.apache.poi.xwpf.usermodel.Borders;
      8 import org.apache.poi.xwpf.usermodel.BreakClear;
      9 import org.apache.poi.xwpf.usermodel.BreakType;
     10 import org.apache.poi.xwpf.usermodel.LineSpacingRule;
     11 import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
     12 import org.apache.poi.xwpf.usermodel.VerticalAlign;
     13 import org.apache.poi.xwpf.usermodel.XWPFDocument;
     14 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
     15 import org.apache.poi.xwpf.usermodel.XWPFRun;
     16 import org.apache.poi.xwpf.usermodel.XWPFTable;
     17 import org.apache.poi.xwpf.usermodel.XWPFTableCell;
     18 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
     19 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
     20 
     21 /**
     22  *
     23  * @author 全力以赴001
     24  */
     25 public class ExportDocTest {
     26 
     27     public static void main(String[] args) throws Exception {
     28         
     29         XWPFDocument doc = new XWPFDocument();
     30         
     31         XWPFParagraph title = doc.createParagraph();//设置活动标题
     32         title.setAlignment(ParagraphAlignment.CENTER);
     33         XWPFRun r1 = title.createRun();
     34         r1.setBold(true);
     35         r1.setFontFamily("宋体");
     36         r1.setText("20元优惠劵活动");//活动名称
     37         r1.setFontSize(22);
     38 
     39         XWPFParagraph actTheme = doc.createParagraph();//设置活动主题
     40         actTheme.setAlignment(ParagraphAlignment.LEFT);
     41         XWPFRun runText1=actTheme.createRun();
     42         runText1.setText("活动主题:20劵优惠劵活动");
     43         runText1.setFontSize(15);
     44         
     45         XWPFParagraph actType = doc.createParagraph();//设置活动类型
     46         XWPFRun runText2=actType.createRun();
     47         runText2.setText("活动类型:系统发劵类型");
     48         runText2.setFontSize(15);
     49         
     50         XWPFParagraph actDate = doc.createParagraph();//设置活动日期
     51         XWPFRun actDaterun=actDate.createRun();
     52         actDaterun.setText("活动日期:2015-06-08至2015-06-10");
     53         actDaterun.setFontSize(15);
     54         
     55         XWPFParagraph actText = doc.createParagraph();//设置活动内容
     56         XWPFRun runText3=actText.createRun();
     57         runText3.setText("活动内容:哈哈哈士大夫士大夫立刻绝对是方路即可大水井坊路可绝对是弗兰克家第三方立刻几点睡了罚款绝对是路客服绝对是路客服绝对是路客服几点睡了罚款家第三方立刻几点睡了罚款记录可定时 ");
     58         runText3.setFontSize(15);
     59         
     60         XWPFParagraph actRemark = doc.createParagraph();//设置活动备注
     61         XWPFRun runText4=actRemark.createRun();
     62         runText4.setText("活动备注: ");
     63         runText4.setFontSize(15);
     64         runText4.setBold(true);
     65         XWPFRun runText5=actRemark.createRun();
     66         runText5.setText("我是活动备注哦........................ ");
     67         runText5.setFontSize(15);
     68         
     69         XWPFParagraph actRule = doc.createParagraph();//设置活动备注
     70         XWPFRun rule=actRule.createRun();
     71         rule.setText("活动规则: ");
     72         rule.setFontSize(15);
     73         rule.setBold(true);
     74         
     75         XWPFTable table=actRule.getDocument().createTable(2,2);//创建表格
     76         table.setWidth(500);
     77         table.setCellMargins(20, 20, 20, 20);
     78         System.out.println(table.getWidth());
     79       
     80       //表格属性
     81         CTTblPr tablePr = table.getCTTbl().addNewTblPr();
     82         //表格宽度
     83         CTTblWidth width = tablePr.addNewTblW();
     84         width.setW(BigInteger.valueOf(8000));
     85         
     86         List<XWPFTableCell> tableCells = table.getRow(0).getTableCells();
     87         tableCells.get(0).setText("第一行第一列的数据:规则类型名称");
     88         tableCells.get(1).setText("第一行第二列的数据:规则描述");
     89         
     90         List<XWPFTableCell> tableCellsq = table.getRow(1).getTableCells();
     91         tableCellsq.get(0).setText("第二行第一列的数据:A发劵规则");
     92         tableCellsq.get(1).setText("第二行第二列的数据:A发劵规则针对5星级用户");
     93         
     94         XWPFParagraph text3 = doc.createParagraph();
     95         XWPFRun runText7=text3.createRun();
     96         runText7.setText("负责人:zhangsan");
     97         runText7.setFontSize(15);
     98         
     99         XWPFParagraph text8 = doc.createParagraph();
    100         XWPFRun runText8=text8.createRun();
    101         runText8.setText("负责人电话:12345678921");
    102         runText8.setFontSize(15);
    103         
    104       
    105         FileOutputStream out = new FileOutputStream("C:\\User\\Desktop\\test.docx");
    106         
    107         doc.write(out);
    108         System.out.println(1);
    109         out.close();
    110 
    111     }
    112 }

     

    转载于:https://www.cnblogs.com/huzi007/p/4566113.html

    展开全文
  • POI 导出word

    2017-02-17 16:35:32
    Demo: package test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream;...import java.io.FileOutputStream;...

    Demo:
    package test;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.HashMap;
    import java.util.Map;

    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.apache.poi.poifs.filesystem.DirectoryEntry;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;

    public class TestQwehyc {

    /**
     * @param args
     * @throws IOException 
     */
    
         public static void main(String[] args) {
             String destFile="D:\\生成的文件.doc";//生成文件的路径 当然也可以生成咋项目里 方便下载
             //根据Word模板导出单个Word文档
             Map<String, String> map=new HashMap<String, String>();
    
             map.put("name", "冯");
             map.put("sex", "女");
             map.put("idCard", "200010");
             map.put("year1", "2000");
             map.put("month1", "07");
    
             //注意biyezheng_moban.doc文档位置,此例中为应用根目录
             HWPFDocument document=new TestQwehyc().replaceDoc("D:/Users/TpSourect/Workspaces/MyEclipse 10/TTest/src/biyezheng_moban.doc", map);
             ByteArrayOutputStream ostream = new ByteArrayOutputStream();
             try {
                 document.write(ostream);
                 //输出word文件
                 OutputStream outs=new FileOutputStream(destFile);
                 outs.write(ostream.toByteArray());
                 outs.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
    
         }
    
    
         /**
          * 
          * @param destFile
          * @param fileCon
          */
         public void exportDoc(String destFile,String fileCon){
             try {
                 ByteArrayInputStream bais = new ByteArrayInputStream(fileCon.getBytes());
                 POIFSFileSystem fs = new POIFSFileSystem();
                 DirectoryEntry directory = fs.getRoot(); 
                 directory.createDocument("WordDocument", bais);
                 FileOutputStream ostream = new FileOutputStream(destFile);
                 fs.writeFilesystem(ostream);
                 bais.close();
                 ostream.close();
    
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
    
         /**
          * 读取word模板并替换变量
          * @param srcPath
          * @param map
          * @return
          */
         public HWPFDocument replaceDoc(String srcPath, Map<String, String> map) {
             try {
                 // 读取word模板
                 FileInputStream fis = new FileInputStream(new File(srcPath));
                 HWPFDocument doc = new HWPFDocument(fis);
                 // 读取word文本内容
                 Range bodyRange = doc.getRange();
                 // 替换文本内容
                 for (Map.Entry<String, String> entry : map.entrySet()) {
                     bodyRange.replaceText("${" + entry.getKey() + "}", entry
                             .getValue());
                 }
                 return doc;
             } catch (Exception e) {
                 e.printStackTrace();
                 return null;
             }
         }
    
     }
    

    模板:
    这里写图片描述

    展开全文
  • POI导出word表格

    2020-12-16 20:57:39
    POI导出word表格 1.MAVEN依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </dependency> &...

    POI导出word表格

    1.MAVEN依赖

            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.15</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.16</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml-schemas</artifactId>
                <version>3.14</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>ooxml-schemas</artifactId>
                <version>1.4</version>
            </dependency>

    2.代码

    package com.poi.excel.wordexcel;
    
    import org.apache.poi.xwpf.usermodel.*;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.math.BigInteger;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @Author qixing.chen
     * @Date 2020/11/19 9:53 上午
     */
    public class WordExportController2 {
    
        public static void main(String[] args) throws IOException {
            XWPFDocument document = new XWPFDocument();
    
            FileOutputStream outputStream = new FileOutputStream(new File("/Users/chen/Downloads/testXXXXXXXXXXX.docx"));
    
            //添加标题
            XWPFParagraph titleParagraph = document.createParagraph();
            //设置段落居中
            titleParagraph.setAlignment(ParagraphAlignment.CENTER);
    
            XWPFRun titleParagraphRun = titleParagraph.createRun();
            titleParagraphRun.setText("哈哈哈哈");
            titleParagraphRun.setColor("000000");
            titleParagraphRun.setFontSize(20);
    
            XWPFTable ComTable = document.createTable();
    
            CTTblWidth comTableidth = ComTable.getCTTbl().addNewTblPr().addNewTblW();
            comTableidth.setType(STTblWidth.DXA);
            comTableidth.setW(BigInteger.valueOf(9072));
    
            //表头标题
            List<String> list = new ArrayList<>();
            list.add("第一列");
            list.add("第二列");
            list.add("第三列");
            list.add("第四列");
            list.add("第五列");
            XWPFTableRow rowHead = ComTable.getRow(0);
            XWPFParagraph cellParagraph = rowHead.getCell(0).getParagraphs().get(0);
            cellParagraph.setAlignment(ParagraphAlignment.CENTER); //设置表头单元格居中
            XWPFRun cellParagraphRun  = cellParagraph.createRun();
            cellParagraphRun.setFontSize(14); //设置表头单元格字号
            cellParagraphRun.setFontFamily("仿宋_GB2312");//设置字体
            cellParagraphRun.setText(list.get(0));
            for (int i = 1; i < list.size(); i++) {
    
                cellParagraph = rowHead.addNewTableCell().getParagraphs().get(0);
                cellParagraph.setAlignment(ParagraphAlignment.CENTER); //设置表头单元格居中
                cellParagraphRun  = cellParagraph.createRun();
                cellParagraphRun.setFontSize(14); //设置表头单元格居中
                cellParagraphRun.setFontFamily("仿宋_GB2312");//设置字体
                cellParagraphRun.setText(list.get(i));
    
            }
    
            //表身body
            List<String> listtt = new ArrayList<>();
            listtt.add("1");
            listtt.add("2");
            listtt.add("3");
            listtt.add("4");
            listtt.add("5");
            List<String> listttt = new ArrayList<>();
            listttt.add("11");
            listttt.add("22");
            listttt.add("33");
            listttt.add("44");
            listttt.add("55");
            List<List<String>> listt = new ArrayList<>();
            listt.add(listtt);
            listt.add(listtt);
            listt.add(listttt);
            listt.add(listttt);
            int rows = listt.size();
            for (int i = 0; i < rows; i++) {
                XWPFTableRow rowsContent = ComTable.createRow();
                System.out.println("00000000000");
                for (int j = 0; j < listt.get(i).size(); j++) {
                    XWPFParagraph cellParagraphC = rowsContent.getCell(j).getParagraphs().get(0);
                    XWPFRun cellParagraphRunC  = cellParagraphC.createRun();
                    cellParagraphRunC.setFontSize(14); //设置表格内容字号
                    cellParagraphRunC.setFontFamily("仿宋_GB2312");//设置字体
                    cellParagraphRunC.setText(listt.get(i).get(j)+""); //单元格段落加载内容
                }
            }
            //表尾
            XWPFTableRow rowsFoot = ComTable.createRow();
            for (int i = 0; i < list.size(); i++){
                if(i == 0){
                    XWPFParagraph cellParagraphCFoot = rowsFoot.getCell(i).getParagraphs().get(0);
                    XWPFRun cellParagraphRunCFoot  = cellParagraphCFoot.createRun();
                    cellParagraphRunCFoot.setFontSize(14); //设置表格内容字号
                    cellParagraphRunCFoot.setFontFamily("仿宋_GB2312");//设置字体
                    cellParagraphRunCFoot.setText("合计"); //单元格段落加载内容
                }else{
                    XWPFParagraph cellParagraphCFoot = rowsFoot.getCell(i).getParagraphs().get(0);
                    XWPFRun cellParagraphRunCFoot  = cellParagraphCFoot.createRun();
                    cellParagraphRunCFoot.setFontSize(14); //设置表格内容字号
                    cellParagraphRunCFoot.setFontFamily("仿宋_GB2312");//设置字体
                    cellParagraphRunCFoot.setText("all"); //单元格段落加载内容
                }
    
            }
    
    
            document.write(outputStream);
            outputStream.close();
            System.out.println("create_table document written success.");
        }
    
    }
    

    3.效果图

    展开全文
  • poi导出word例子(图片)
  • POI导出word,增强方案

    2018-12-18 14:19:48
    poi导出word方案poi导出word的常规使用方式设计思路问题所在代码演示poi-tl 处理word2分钟快速入门基本语法文本模板 {{var}}图片模板 {{@var}}表格模板 {{#var}}列表模板 {{*var}}文档模板 {{+var}}详细示例 poi导出...
  • poi导出word模板

    2020-03-30 10:53:14
    **poi导出word模板段落处理 流程: 1:读取文档:` //获取docx解析对象 XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(inputUrl)); 在XWPFDocument对象里有两个常用的方法,一个是...
  • Java POI导出Word文档

    2017-06-18 23:40:54
    本文章来源 POI导出Word文档—黑壳网昨天晚上被壳妹,威逼利诱,做点小东西,其中就有一个POI导出Word文档。并且最好不要用freemarker模板导出word文档,只好手动来一个工具类了。 供参考学习显示界面 控制层代码...
  • 目录 需求:用POI写一个Word导出 需求:用POI写一个Word导出 想到一个小品,问把大象装冰箱需要几步?
  • Java使用poi导出word

    2019-12-11 09:18:28
    poi导出word分为两种方式,一种为使用word模板,然后替换值,另一种为使用poi提供的api生成word。这里介绍后者。 最后的效果图 使用的maven依赖 <dependency> <groupId>org.apache.poi</...
  • 导出Word文件其实与...下面简单介绍一下在Springboot项目中如何使用POI导出Word文件。 pom.xml文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>sprin...
  • poi导出word与excel模版

    2018-01-04 18:03:55
    这里推荐一个比较好的poi导出word模版,http://m.blog.csdn.net/liushimiao0104/article/details/78520120但需要注意的是导入的jar包,poi-3.9.jar,ooxml-schemas-1.1.jar,poi-tl-1.2.0.jar以下是使用poi导出word与...
  • poi导出word 报NoClassDefFoundError 注:就是所谓的明明jar包中有这个方法,但是就是找不到,因为pio自带的poi-ooxml-schemas-3.15.jar 里面的方法并不全,可以说精简精简再精简,所以要 引用 ooxml-schemas-1.1....
  • JavaWeb_POI导出word

    2017-12-14 16:40:00
    自己整理的关于javaweb项目中利用POI导出word的一些资料 XWPFDocument document=new XWPFDocument(); //文档对象 XWPFParagraph paragraph; //段落对象 XWPFRun run; //文本对象paragraph=document....
  • poi导出word表格的问题

    千次阅读 2015-05-08 09:15:06
    poi导出word的问题
  • java工具类POI导出word

    2017-12-09 16:40:00
    1、新建一个word,里面填写内容,如: 2、导出wordjava类 ... * POI导出word测试 * @throws Exception */ @RequestMapping(value="exportApplyForm") public void exportApplyForm(HttpServletRespon...
  • poi 导出word,导出表格(复杂表格合并行列)解决方法
  • poi导出word表格jar包

    2015-05-13 10:57:10
    poi导出word表格jar包

空空如也

1 2 3 4 5 ... 20
收藏数 1,187
精华内容 474
关键字:

poi导出word