-
java 通过poi操作word(doc)文件
2019-03-07 15:58:08通过POI类库实现word文档的创建。 思路: 通过自定义变量名,利用替换的方式,将所需数据填入,一般用于生成固定格式的报告。如果需要填入的数据很多,则略繁琐。 注意: a)、例子中给的只能替换变量,不能根据...通过POI类库实现word文档的创建。
思路:
通过自定义变量名,利用替换的方式,将所需数据填入,一般用于生成固定格式的报告。如果需要填入的数据很多,则略繁琐。
注意:
a)、例子中给的只能替换变量,不能根据结果生成多行数据。例如表格等。
b)、目前支持DOC格式,不支持DOCX格式。
1、需要新建一个word模版,在需要输入数据的地方填入:
${变量名}
变量名称根据自行需要更改。不可有重复名称。
2、通过POI类,进行变量的替换,以实现word文件的生成。
3、示例:
public static void CreatWordByModel(String tmpFile, Map<String, String> contentMap, String exportFile) throws Exception{ InputStream in = null; in = new FileInputStream(new File(tmpFile)); HWPFDocument document = null; document = new HWPFDocument(in); // 读取文本内容 Range bodyRange = document.getRange(); System.out.println(bodyRange.toString()); System.out.println(bodyRange.text()); // 替换内容 for (Map.Entry<String, String> entry : contentMap.entrySet()) { bodyRange.replaceText("${" + entry.getKey() + "}", entry.getValue()); } //导出到文件 try { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); document.write((OutputStream)byteArrayOutputStream); OutputStream outputStream = new FileOutputStream(exportFile); outputStream.write(byteArrayOutputStream.toByteArray()); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { Map map=new HashMap(); map.put("data1","20190301"); map.put("data2","你好"); map.put("data3","这是一个测试"); map.put("data4","CSDN"); map.put("data5","https://blog.csdn.net/yxf771hotmail"); CreatWordByModel("C:/model.doc",map,"C:/newfile.doc"); }
4、结果:
模版:
结果:
打赏
-
java使用poi操作word,包含表格中内容,通过模板替换动态数据
2021-02-09 15:56:20implementation 'org.apache.poi:poi:4.1.2' implementation 'org.apache.poi:poi-ooxml:4.1.2' implementation 'org.apache.poi:poi-ooxml-schemas:4.1.2' //controller层 public void test...
引入资源库implementation 'org.apache.poi:poi:4.1.2' implementation 'org.apache.poi:poi-ooxml:4.1.2' implementation 'org.apache.poi:poi-ooxml-schemas:4.1.2'
public void test(HttpServletResponse response){ try { //定义一个Entity放要输出的数据 EditWordEntity report = new EditWordEntity(); report.setMonth("April"); report.setCode("202102"); report.setTestDate("2020-04-01 to 2020-04-31"); report.setAAAAA("aaaaaaa"); report.setBBBBB("bbbbbbb"); Map<String, String> replaceMap = new HashMap<>(); replaceMap.put("month", report.getMonth()); replaceMap.put("code", report.getCode()); replaceMap.put("testDate", report.getTestDate()); replaceMap.put("AAAAA", report.getAAAAA()); replaceMap.put("BBBBB", report.getBBBBB()); PoiEditWord poiEditWord = new PoiEditWord(); poiEditWord.downloadReportFile("test poi.docx", replaceMap, response); } catch (IOException e) { e.printStackTrace(); }
public class PoiEditWord { public void downloadReportFile(String fileName, Map<String, String> replaceMap, HttpServletResponse response) throws IOException { InputStream in = null; XWPFDocument document = null; response.reset(); response.setContentType("application/x-msdownload"); ByteArrayOutputStream ostream = new ByteArrayOutputStream(); OutputStream os = null; try { response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); //找到项目中模板文件的位置 in = Thread.currentThread().getContextClassLoader().getResourceAsStream("test poi.docx"); //获取docx解析对象 document = new XWPFDocument(in); WordUtil.changeText(document, replaceMap); os = response.getOutputStream(); document.write(os); os.write(ostream.toByteArray());os.close();ostream.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } if (document != null) { document.close(); } if (os != null) { os.close(); } if (ostream != null) { ostream.close(); } } catch (Exception e) { e.printStackTrace(); } } } }
//工具类 public class WordUtil { /** * 遍历文本 * * @param document docx解析对象 */ public static void traverse(XWPFDocument document) { //获取文档中各段落集合 List<XWPFParagraph> paragraphs = document.getParagraphs(); //遍历各段落 for (XWPFParagraph paragraph : paragraphs) { //判断此段落时候需要进行替换 String text = paragraph.getText(); List<XWPFRun> runs = paragraph.getRuns(); for (XWPFRun run : runs) { // TODO 处理文本 } } } /** * 替换段落文本 * * @param document docx解析对象 * @param textMap 需要替换的信息集合 */ public static void changeText(XWPFDocument document, Map<String, String> textMap) { //获取段落集合 List<XWPFParagraph> paragraphs = document.getParagraphs(); for (XWPFParagraph paragraph : paragraphs) { //获取到段落中的所有文本内容 String text = paragraph.getText(); //判断此段落中是否有需要进行替换的文本 if (checkText(text)) { List<XWPFRun> runs = paragraph.getRuns(); for (XWPFRun run : runs) { //替换模板原来位置 run.setText(changeValue(run.toString(), textMap), 0); } } } replaceTableValue(document, textMap); } public static void replaceTableValue(XWPFDocument document, Map<String, String> textMap){ Iterator<XWPFTable> it = document.getTablesIterator(); //表格内容替换添加 while(it.hasNext()){ XWPFTable table = it.next(); int rcount = table.getNumberOfRows(); for(int i =0 ;i < rcount;i++){ XWPFTableRow row = table.getRow(i); List<XWPFTableCell> cells = row.getTableCells(); for (XWPFTableCell cell : cells){ for(Map.Entry<String, String> e : textMap.entrySet()){ if(checkText(cell.getText())){ List<XWPFParagraph> tableParagraphsList = cell.getParagraphs(); for (XWPFParagraph paragraph : tableParagraphsList) { String text = paragraph.getText(); //获取到段落中的所有文本内容 if (checkText(text)) { //判断此段落中是否有需要进行替换的文本 List<XWPFRun> runs = paragraph.getRuns(); for (XWPFRun run : runs) { run.setText(changeValue(run.toString(), textMap), 0);//替换模板原来位置 } } } } } } } } } /** * 判断文本中是否包含$ * * @param text 文本 * @return 包含返回true, 不包含返回false */ public static boolean checkText(String text) { boolean check = false; if (text.contains("$")) { check = true; } return check; } /** * 匹配传入信息集合与模板 * * @param value 模板需要替换的区域 * @param textMap 传入信息集合 * @return 模板需要替换区域信息集合对应值 */ public static String changeValue(String value, Map<String, String> textMap) { Set<Map.Entry<String, String>> textSets = textMap.entrySet(); for (Map.Entry<String, String> textSet : textSets) { //匹配模板与替换值 格式${key} String key = "${" + textSet.getKey() + "}"; if (value.contains(key)) { value = textSet.getValue(); } } //模板未匹配到区域替换为空 if (checkText(value)) { value = ""; } return value; } /** * 为表格插入数据,行数不够添加新行 * * @param table 需要插入数据的表格 * @param tableList 插入数据集合 */ public static void insertTable(XWPFTable table, List<String[]> tableList) { //创建行,根据需要插入的数据添加新行,不处理表头 for (int i = 1; i < tableList.size(); i++) { table.createRow(); } //遍历表格插入数据 List<XWPFTableRow> rows = table.getRows(); for (int i = 1; i < rows.size(); i++) { XWPFTableRow newRow = table.getRow(i); List<XWPFTableCell> cells = newRow.getTableCells(); for (int j = 0; j < cells.size(); j++) { XWPFTableCell cell = cells.get(j); cell.setText(tableList.get(i - 1)[j]); } } } // 给生成的表格设置样式 public static void setCellWitchAndAlign(XWPFTableCell cell, String width, STVerticalJc.Enum typeEnum, STJc.Enum align){ CTTc cttc = cell.getCTTc(); CTTcPr ctPr = cttc.addNewTcPr(); ctPr.addNewVAlign().setVal(typeEnum); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(align); CTTblWidth ctTblWidth = (ctPr != null && ctPr.isSetTcW() && ctPr.getTcW()!=null &&ctPr.getTcW().getW()!=null) ? ctPr.getTcW(): ctPr.addNewTcW(); if(StringUtils.isNotBlank(width)){ ctTblWidth.setW(new BigInteger(width)); ctTblWidth.setType(STTblWidth.DXA); } } }
最终下载文件效果如图:
参考:https://www.cnblogs.com/bb1008/p/10605943.html -
Java通过POI操作Excel
2020-07-29 11:00:08文章目录POI简介Excel 03版与07版区别使用基本写基本读读取不同类型的数据公式...HWPF - 提供读写Microsoft Word DOC格式文件的功能。 HSLF - 提供读写Microsoft PowerPoint格式文件的功能。 HDGF - 提供读MicrosoftPOI简介
基本功能
- HSSF - 提供读写Microsoft Excel XLS格式文件的功能。
- XSSF - 提供读写Microsoft Excel OOXML XLSX格式文件的功能。
- SXSSF -XSSF高速版
- HWPF - 提供读写Microsoft Word DOC格式文件的功能。
- HSLF - 提供读写Microsoft PowerPoint格式文件的功能。
- HDGF - 提供读Microsoft Visio格式文件的功能。
- HPBF - 提供读Microsoft Publisher格式文件的功能。
- HSMF - 提供读Microsoft Outlook格式文件的功能。
缺点: 会先将所有数据加载到内存,在进行操作,容易OOM
Excel 03版与07版区别
- 后缀名: 03为xls, 07为xlsx
- 最大行数: 03最多65536行,07理论无限
使用
<!--xls 03--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <!--xlsx 07--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> <!--日期格式化工具 jdk8 time包吸取了此工具--> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.10.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
基本写
03与07版只是使用的对象不同,生成文件时指定的后缀名不同,其他一样
public void testWrite(){ //1.创建一个工作簿 07版使用XSSFWorkbook Workbook workbook = new HSSFWorkbook(); //2.创建一个工作表,不指定表名则为sheet1 sheet2 .... Sheet sheet=workbook.creatSheet("表一"); //3.创建一行,程序中的0代表excel中的1 Row row1 = sheet.createRow(0); //4.创建一个单元格,构成(1,1)单元格 Cell cell11= row1.createCell(0); //5.往单元格中写值 cell.setCellValue("11") //(1,2)单元格 Cell cell12= row1.createCell(1); cell.setCellValue("12") //6.生成一张表,03版xls后缀,07版xlsx后缀 FileOutputStream fileOutputStream=new FileOutputStream(Path+"测试表.xls"); workbook.write(fileOutputStream); fileOutputStream.close(); //((SXSSFWorkbook)Workbook).dispose(); //使用SXSSFWorkbook时清除临时文件 }
HSSFWorkbook,写数据较快,但最多65536行
XSSFWorkbook,写数据时比HSSF慢容易OOM但数量无限制
SXSSFWorkbook为XSSFWorkbook的加速版
- 更换对象
new SXSSFWorkbook(内存中记录数);
- 默认将100条记录保存在内存中,如果超过就将最前面的数据写入临时文件.
- 写入完成后清除临时文件
SXSSFWorkbook.dispose();
- 但是 合并区域,注释等仍然只能存储在内存中
基本读
public void testWrite(){ //1.获取文件流 FileInputStream fileInputStream=new FileInputStream(Path+"测试表.xls"); //2.读取一个工作簿 Workbook workbook = new HSSFWorkbook(fileInputStream); //3.读取一个工作表 //workbook.getSheet("表一"); //根据名字获取 Sheet sheet = workbook.getSheetAt(0); //根据下标获取 //4.读取行 Row row = sheet.getRow(0); //5.读取单元格 Cell cell = row.getCell(0); //6.读取单元格的值,类型不同使用方法不同 cell.getStringCellValue(); fileInputStream.close(); }
读取不同类型的数据
HSSFCell枚举类中有所有的Excel数据类型
HSSFDateUtil.isCellDateFormatted(cell) 判断cell是否为Date日期类型
public void testWrite(){ FileInputStream fileInputStream=new FileInputStream(Path+"测试表.xls"); Workbook workbook = new HSSFWorkbook(fileInputStream); Sheet sheet = workbook.getSheetAt(0); //读取第一行 表头 Row rowTitle = sheet.getRow(0); if(rowTitle!!=null){ //获取一行中有多少列 int cellCount=rowTitle.getPhysicalNumberOfCells(); for(int cellNum=0;cellNum<cellCount;cellNum++){ Cell cell = rowTitle.getCell(cellNum); if(cell!=null){ String cellValue=cell.getStringCellValue(); System.out.print(cellValue); } } System.out.println(); } //读取表内容 //获取表中总行数 int rowCount=sheet.getPhysicalNumberOfRows(); for(int rowNum=1;rowNum<rowCount;rowNum++){ //第0行已经获取过了从1开始 Row rowData=sheet.getRow(rowNum); if(rowData!=null){ //获取一行中有多少列 int cellCount=rowData.getPhysicalNumberOfCells(); for(int cellNum=0;cellNum<cellCount;cellNum++){ Cell cell = rowData.getCell(cellNum); //匹配列的数据类型 if(cell!=null){ //获取单元格中数据类型 int cellType=cell.getCellTpye(); String cellValue = ""; switch(cellType){ case HSSFCell.CELL_TYPE_STRING: //字符串 cellValue=cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_BOOLEAN: //boolean cellValue=String.valueOf(cell.getBOOLEANCellValue()); break; case HSSFCell.CELL_TYPE_NUMERIC: //数字(分日期和普通数字) if(HSSFDateUtil.isCellDateFormatted(cell)){ //日期 Date date=cell.getDateCellValue(); //格式化日期并赋值给cellValue }else{ //数字 //转换为字符串格式 cell.setCellType(HSSFCell.CELL_TYPE_STRING); cellValue=cell.toString(); } break; case HSSFCell.CELL_TYPE_BLANK: //空 break; case HSSFCell.CELL_TYPE_ERROR: //数据类型错误 break; } System.out.print(cellValue); } } } System.out.println(); } fileInputStream.close(); }
注意:数字分日期和普通数字两类
公式计算
FormulaEvaluator 公式计算类
CellValue 公式计算得到的值类,要格式化
FormulaEvaluator formulaEvaluator =new HSSFFormulaEvaluator((HSSFWorkbook)workbook); int cellType=cell.getCellTpye(); switch(cellType){ case HSSFCell.CELL_TYPE_FORMULA: //公式 //获得公式,不获取公式也不影响计算 String formula=cell.getCellFormula(); //得到计算后的值 CellValue eva = formulaEvaluator.evaluator(cell); //计算后的值要格式化 String value= eva.formatAsString(); break; }
-
java使用poi操作excel文件_java使用poi读取ppt文件和poi读取excel、word示例
2021-02-26 13:14:32POI项目可创建和维护操作各种基于OOXML和OLE2文件格式的Java API。大多数MS Office都是OLE2格式的。POI通HSMF子项目来支持Outlook,通过HDGF子项目来支持Visio,通过HPBF子项目来支持Publisher。使用POI抽取Word简单...Apache的POI项目可以用来处理MS Office文档,codeplex上还有一个它的.net版本。POI项目可创建和维护操作各种基于OOXML和OLE2文件格式的Java API。大多数MS Office都是OLE2格式的。POI通HSMF子项目来支持Outlook,通过HDGF子项目来支持Visio,通过HPBF子项目来支持Publisher。
使用POI抽取Word简单示例:
要引入poi-3.7.jat和poi-scratchpad-3.7.ajr这两个包。
package msoffice;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.usermodel.Section;
public class Word {
// 直接抽取全部内容
public static String readDoc1(InputStream is) throws IOException {
WordExtractor extractor = new WordExtractor(is);
return extractor.getText();
}
//分章节Section、段落Paragraph、字符串CharacterRun抽取
public static void readDoc2(InputStream is) throws IOException {
HWPFDocument doc=new HWPFDocument(is);
Range r=doc.getRange();
for(int x=0;x
Section s=r.getSection(x);
for(int y=0;y
Paragraph p=s.getParagraph(y);
for(int z=0;z
CharacterRun run=p.getCharacterRun(z);
String text=run.text();
System.out.print(text);
}
}
}
}
public static void main(String[] args) {
File file = new File("/home/orisun/1.doc");
try {
FileInputStream fin = new FileInputStream(file);
String cont = readDoc1(fin);
System.out.println(cont);
fin.close();
fin = new FileInputStream(file);
readDoc2(fin);
fin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
POI抽取PPT示例:
package msoffice;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.extractor.PowerPointExtractor;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
public class PPT {
//直接抽取幻灯片的全部内容
public static String readDoc1(InputStream is) throws IOException{
PowerPointExtractor extractor=new PowerPointExtractor(is);
return extractor.getText();
}
//一张幻灯片一张幻灯片地读取
public static void readDoc2(InputStream is) throws IOException{
SlideShow ss=new SlideShow(new HSLFSlideShow(is));
Slide[] slides=ss.getSlides();
for(int i=0;i
//读取一张幻灯片的标题
String title=slides[i].getTitle();
System.out.println("标题:"+title);
//读取一张幻灯片的内容(包括标题)
TextRun[] runs=slides[i].getTextRuns();
for(int j=0;j
System.out.println(runs[j].getText());
}
}
}
public static void main(String[] args){
File file = new File("/home/orisun/2.ppt");
try{
FileInputStream fin=new FileInputStream(file);
String cont=readDoc1(fin);
System.out.println(cont);
fin.close();
fin=new FileInputStream(file);
readDoc2(fin);
fin.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
Excel文件由多个Workbook组成,一个Workbook由多个Sheet组成。
POI抽取Excel简单示例:
package msoffice;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Row;
public class Excel {
//直接读取Excel的全部内容
public static String readDoc1(InputStream is)throws IOException{
HSSFWorkbook wb=new HSSFWorkbook(new POIFSFileSystem(is));
ExcelExtractor extractor=new ExcelExtractor(wb);
extractor.setFormulasNotResults(false);
extractor.setIncludeSheetNames(true);
return extractor.getText();
}
//读取时细化到Sheet、行甚至单元格
public static double getAvg(InputStream is)throws IOException{
HSSFWorkbook wb=new HSSFWorkbook(new POIFSFileSystem(is));
//获取第一张sheet
HSSFSheet sheet=wb.getSheetAt(0);
double molecule=0.0;
double denominator=0.0;
//按行遍历sheet
Iterator riter=sheet.rowIterator();
while(riter.hasNext()){
HSSFRow row=(HSSFRow)riter.next();
HSSFCell cell1=row.getCell(4);
HSSFCell cell2=row.getCell(4);
if(cell1.getCellType()!=HSSFCell.CELL_TYPE_NUMERIC){
System.err.println("数字类型错误!");
System.exit(-2);
}
if(cell2.getCellType()!=HSSFCell.CELL_TYPE_NUMERIC){
System.err.println("数字类型错误!");
System.exit(-2);
}
denominator+=Double.parseDouble(cell2.toString().trim());
molecule+=Double.parseDouble(cell2.toString().trim())*Float.parseFloat(cell1.toString().trim());
}
return molecule/denominator;
}
public static void main(String[] args){
File file = new File("/home/orisun/3.xls");
try{
FileInputStream fin=new FileInputStream(file);
String cont=readDoc1(fin);
System.out.println(cont);
fin.close();
fin=new FileInputStream(file);
System.out.println("加权平均分"+getAvg(fin));
fin.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
-
java poi 填充单元格_Java基于POI填充Word模版
2021-01-10 17:40:20最近有个需求,就是要根据用户订单信息来填充现有的Word模版,...POI操作Word的常用属性在操作之前,我们需要了解一下属性和方法XWPFDocument:用来获取或者创建一个Word文档XWPFParagraph:标题、文档、表格等XWPF... -
java poi操作word 读取表格问题
2016-06-29 13:33:21poi用的是3.14版本,所有该加入的包都加入了,读取word的表格的方法也是网上通用的,但是现在遇到一个问题,在读取一个word文档中的多个表格的时候中间某一个表格会读错行或列,比如把上一行的数据读到了下一行的... -
Java利用POI读写word文件
2017-02-19 22:49:37Java利用POI读写word文件 对于word文档的读写等操作是大多数开发者都会遇到的问题。Apache的POI是解决word读写的方案之一。本文展示的是通过HWPFDocument读写文件。 一、读取word内容 public class HwpfTest ... -
java poi操作word 2003 2007
2013-05-31 15:05:35实现java替换word中指定内容,实现word2003版本很轻松的完成了,可是到2007版本时缺头疼了。因为在网上查找的很多相关例子都是需要删除哪一行的信息在setText添加进去这样不是我所想要的,本人所想要的是可以像2003... -
JAVA使用POI-TL通过Word模板生成Word文件
2018-08-15 16:04:24用Java操作word文档,毫无疑问,当下最流行apache poi,对于poi如何操作word文档,这里不作过多介绍。 这里主要讲解如何通过一个制作好的word模板文件,通过数据填充,生成加工好的word文件。 官方网站 ... -
java代码操作POI生成Word文档
2017-11-07 15:45:57突然发现好像跟上传下载以及处理各种文档扛上了,一直在做这方面的东西,今天吧java通过POI生成word文档的代码贴出来,供大家参考。有什么不对之处肯定大家批评指正。import java.io.ByteArrayInputStream; import ... -
java使用poi-tl操作word文件
2019-12-12 23:28:29场景 某一天,笔者在写计算机组成原理实验报告的时候,发现需要...通过百度“java操作word”关键词,搜索到的文章基本上都是使用poi来操作word。但是今天要介绍的是一个比poi简单的,代码更加简洁的工具:poi-pl 官... -
java poi 对word文档的操作_POI动态插入数据到Word文档
2021-01-21 03:38:25模板制作制作word模版,${xxxx}是要替换的内容。...依赖的包 org.apache.poi poi 3.15 org.apache.poi poi-ooxml 3.15操作docx文件POI在读写word docx文件时是通过xwpf模块来进行的,其核心是XWPFDocumen... -
java poi通过模板生成word文档
2017-06-02 17:13:49里面说到使用模板的方式生成word文档,但是给出的代码并没有起效,这里我稍作了修改,这个是word文档模板方法操作工具类: [java] view plain copy print? package util; import org.apache... -
poi操作word模板替换数据并且导出word
2020-07-31 10:31:23poi操作word模板替换数据,很简单,涉及的算法也不是很多。我会提供poi的jar包。核心思想就是将word需要替换的部分写成关键字,在操作word的时候,根据关键字替换成我们填充的数据。 二、poi下载 微信公众号搜索:... -
通过poi在java程序中输入word文件
2013-02-25 14:59:41一、通过poi操作word 2007文件读写,需导入如下几个jar包 [img]http://dl.iteye.com/upload/attachment/0080/8120/2430a475-5a01-386e-be07-64fdf9f01a62.jpg[/img] 由于上传文件大小限制,只传了几个与poi... -
Java通过POI读写Excel文件
2011-05-10 17:31:00Java通过POI读写Excel文件 在企业项目中经常要用Java来读写Excel或者Word文档,Excel是微软的office产品中的一个重要产品,并且也是非常流行的产品。现在走 在大街上的10个人可能都不知道java是什么东西,... -
Java POI通过模板方法生成word文档
2016-03-06 12:54:17里面说到使用模板的方式生成word文档,但是给出的代码并没有起效,这里我稍作了修改,这个是word文档模板方法操作工具类: package util; import org.apache.poi.xwpf.usermodel.*; import org.junit.Test; import... -
java poi word转pdf_用java将简单的word文档换成pdf文档
2021-02-28 06:44:29用java将简单的word文档换成pdf文档的方式很多,因为很多都没有实际测试过,所以这里就先泛泛的说一下...通过在操作系统安装转换软件,在java代码中调用软件命令来实现转换。常用的有OpenOffice,Pandoc,Jacob(限于... -
POI通过XWPFDocument方式操作word2007
2018-04-16 17:54:19使用POI-3.9 package com.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.math.BigInteger; import java.util.... -
java POI对word中的表格动态插入固定数据,以及插入不确定数量的的数据
2020-11-27 13:19:13从网上百度了一下,然后自己修改下,实现了对word中的同一张表格同时进行通过key替换操作,以及从特定的行开始插入数据,根据是需要插入的数据自动增加行等;下面直接上主要代码,都有注释。 maven依赖包引入 <... -
apache poi操作word(03,07)踩坑
2018-04-13 17:05:34项目中业务需要生成用户签名后的协议文档,之前协议是在页面中展示并生成签名,简单用js插件canvas绘制生成pdf文件存储,但是word文档业务中不允许展示word协议,只能通过java服务端去手动生成。例行 google,baidu... -
POI-JAVA读取excel生成word表格文档
2019-08-29 17:22:06平时,使用POI操作Excel,但是很少操作WORD。今天碰到操作WORD的需求,借鉴网上的文章,讲的非常透彻。其中表格宽度设置,不起效果,代码以注释。通过每个单元格的宽度设置,间接放大宽度。 我的代码如下: package ...
-
World Hydropower Generation 世界水力发电-数据集
-
mac小技巧:轻松查看查看已登账号的密码
-
C/C++反汇编解密
-
CS83711两节锂电池7.4V供电内置升压2x16.5W双声道D类音频功放IC
-
vscode顶部出现不受支持提示
-
r7 5800h和i7 1165g7参数对比差距大不大
-
app软件测试全栈系列精品课程
-
2021-03-04
-
python Flask+scrapy+人工智能 实现高性能搜索引擎
-
####好好好####详解深度学习中的 Normalization,不只是 BN
-
放在李云龙身上,SSL/TLS协议原理可以这么解释
-
马士兵JVM课程笔记
-
ibatis开发指南.pdf.zip
-
频出利好,ZT交易所ZTB最佳时间来了!
-
nkosi-tauro.github.io-源码
-
笔记:《Effective C++》
-
lliunx操作系统下redis-5.0.4.tar.gz
-
1902_20191611321_韩玉满.zip
-
VMware vSphere ESXi 7 精讲/VCSA/VSAN
-
详解事物以及事务的ACID