java poi模板导出word后用微软的word打不开,但是wps可以,跪求大...
楼主你好,首先你检测一下你的word是否正常,方法是:点开始,再点运行,输入winword /safe(注意,/前面有一个空格),看看是否能打开word,如果可以,那么word是正常的,没有问题。
那么楼主打不开word可能是通用模板的问题了,通用模板的具体路径为:C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates,把这个文件夹下的内容全部彻底删除,然后再去打开word,它会自动生成一个默认的通用模板,问题应该就能解决了!
跪求POI根据模板生成word文档的例子。
注意啦,是用书签标记的方...
展开全部 POI生成excel表格,如何合并单元格Java代码import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;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.util.Region;public class ExcelTest {/*** @param args*/public static void main(String[] args) throws IOException {try {HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");HSSFCellStyle style = wb.createCellStyle(); // 样式对象style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平HSSFRow row = sheet.createRow((short) 0);HSSFRow row2 = sheet.createRow((short) 1);sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0));HSSFCell ce = row.createCell((short) 0);ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 中文处理ce.setCellValue("项目\\日期"); // 表格的第一行第一列显示的数据ce.setCellStyle(style); // 样式,居中int num = 0;for (int i = 0; i < 9; i++) { // 循环9次,每一次都要跨单元格显示// 计算从那个单元格跨到那一格int celln = 0;int celle = 0;if (i == 0) {celln = 0;celle = 1;} else {celln = (i * 2);celle = (i * 2 + 1);}// 单元格合并// 四个参数分别是:起始行,起始列,结束行,结束列sheet.addMergedRegion(new Region(0, (short) (celln + 1), 0,(short) (celle + 1)));HSSFCell cell = row.createCell((short) (celln + 1));cell.setCellValue("merging" + i); // 跨单元格显示的数据cell.setCellStyle(style); // 样式// 不跨单元格显示的数据,如:分两行,上一行分别两格为一格,下一行就为两格,“数量”,“金额”HSSFCell cell1 = row2.createCell((short) celle);HSSFCell cell2 = row2.createCell((short) (celle + 1));cell1.setEncoding(HSSFCell.ENCODING_UTF_16);cell1.setCellValue("数量");cell1.setCellStyle(style);cell2.setEncoding(HSSFCell.ENCODING_UTF_16);cell2.setCellValue("金额");cell2.setCellStyle(style);num++;}// 在后面加上合计百分比// 合计 在最后加上,还要跨一个单元格sheet.addMergedRegion(new Region(0, (short) (2 * num + 1), 0,(short) (2 * num + 2)));HSSFCell cell = row.createCell((short) (2 * num + 1));cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("合计");cell.setCellStyle(style);HSSFCell cell1 = row2.createCell((short) (2 * num + 1));HSSFCell cell2 = row2.createCell((short) (2 * num + 2));cell1.setEncoding(HSSFCell.ENCODING_UTF_16);cell1.setCellValue("数量");cell1.setCellStyle(style);cell2.setEncoding(HSSFCell.ENCODING_UTF_16);cell2.setCellValue("金额");cell2.setCellStyle(style);// 百分比 同上sheet.addMergedRegion(new Region(0, (short) (2 * num + 3), 0,(short) (2 * num + 4)));HSSFCell cellb = row.createCell((short) (2 * num + 3));cellb.setEncoding(HSSFCell.ENCODING_UTF_16);cellb.setCellValue("百分比");cellb.setCellStyle(style);HSSFCell cellb1 = row2.createCell((short) (2 * num + 3));HSSFCell cellb2 = row2.createCell((short) (2 * num + 4));cellb1.setEncoding(HSSFCell.ENCODING_UTF_16);cellb1.setCellValue("数量");cellb1.setCellStyle(style);cellb2.setEncoding(HSSFCell.ENCODING_UTF_16);cellb2.setCellValue("金额");cellb2.setCellStyle(style);FileOutputStream fileOut = new FileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();System.out.print("OK");} catch (Exception ex) {ex.printStackTrace();}}}
poi 生成word时如何设置标题
POI生成excel表格,如何合并单元格 Java代码import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; 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.util.Region; public class ExcelTest { /** * @param args */ public static void main(String[] args) throws IOException { try { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFCellStyle style = wb.createCellStyle(); // 样式对象 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平 HSSFRow row = sheet.createRow((short) 0); HSSFRow row2 = sheet.createRow((short) 1); sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0)); HSSFCell ce = row.createCell((short) 0); ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 中文处理 ce.setCellValue("项目\\日期"); // 表格的第一行第一列显示的数据 ce.setCellStyle(style); // 样式,居中 int num = 0; for (int i = 0; i < 9; i++) { // 循环9次,每一次都要跨单元格显示 // 计算从那个单元格跨到那一格 int celln = 0; int celle = 0; if (i == 0) { celln = 0; celle = 1; } else { celln = (i * 2); celle = (i * 2 + 1); } // 单元格合并 // 四个参数分别是:起始行,起始列,结束行,结束列 sheet.addMergedRegion(new Region(0, (short) (celln + 1), 0, (short) (celle + 1))); HSSFCell cell = row.createCell((short) (celln + 1)); cell.setCellValue("merging" + i); // 跨单元格显示的数据 cell.setCellStyle(style); // 样式 // 不跨单元格显示的数据,如:分两行,上一行分别两格为一格,下一行就为两格,“数量”,“金额” HSSFCell cell1 = row2.createCell((short) celle); HSSFCell cell2 = row2.createCell((short) (celle + 1)); cell1.setEncoding(HSSFCell.ENCODING_UTF_16); cell1.setCellValue("数量"); cell1.setCellStyle(style); cell2.setEncoding(HSSFCell.ENCODING_UTF_16); cell2.setCellValue("金额"); cell2.setCellStyle(style); num++; } // 在后面加上合计百分比 // 合计 在最后加上,还要跨一个单元格 sheet.addMergedRegion(new Region(0, (short) (2 * num + 1), 0, (short) (2 * num + 2))); HSSFCell cell = row.createCell((short) (2 * num + 1)); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("合计"); cell.setCellStyle(style); HSSFCell cell1 = row2.createCell((short) (2 * num + 1)); HSSFCell cell2 = row2.createCell((short) (2 * num + 2)); cell1.setEncoding(HSSFCell.ENCODING_UTF_16); cell1.setCellValue("数量"); cell1.setCellStyle(style); cell2.setEncoding(HSSFCell.ENCODING_UTF_16); cell2.setCellValue("金额"); cell2.setCellStyle(style); // 百分比 同上 sheet.addMergedRegion(new Region(0, (short) (2 * num + 3), 0, (short) (2 * num + 4))); HSSFCell cellb = row.createCell((short) (2 * num + 3)); cellb.setEncoding(HSSFCell.ENCODING_UTF_16); cellb.setCellValue("百分比"); cellb.setCellStyle(style); HSSFCell cellb1 = row2.createCell((short) (2 * num + 3)); HSSFCell cellb2 = row2.createCell((short) (2 * num + 4)); cellb1.setEncoding(HSSFCell.ENCODING_UTF_16); cellb1.setCellValue("数量"); cellb1.setCellStyle(style); cellb2.setEncoding(HSSFCell.ENCODING_UTF_16); cellb2.setCellValue("金额"); cellb2.setCellStyle(style); FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); System.out.print("OK"); } catch (Exception ex) { ex.printStackTrace(); } } }
java用poi导出word文档,我要导出一个表格,表格的单元格中还要有...
有个最简单,不用使用任何 poi 或其他第三方类库的方法生成 excel ,或 word ,你把一个生成好的 word 例子用文件另存为 xml , docx 之类,然后你再直接用记事本去打开这个 docx ,你就会发现是 xml 格式,这个时候,你在程序里面就直接用普通代码生成这个 xml 就可以了。
java 谁有poi读取本地word然后在替换word的内容如table、图片....的...
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
这里的方法支持导出excel至项目所在服务器,或导出至客户端浏览器供用户下载,下面我把两个实例都放出来。
1.下载所需POI的jar包,并导入项目。
2.添加一个User类,用于存放用户实体,类中内容如下:1 package com.mvc.po;23 public class User {4 private int id;5 private String name;6 private String password;7 private int age;89 public User() {10 11 }12 13 public User(int id, String name, String password, int age) {14 this.id = id;15 this.name = name;16 this.password = password;17 this.age = age;18 }19 public int getId() {20 return id;21 }22 public void setId(int id) {23 this.id = id;24 }25 public String getName() {26 return name;27 }28 public void setName(String name) {29 this.name = name;30 }31 public String getPassword() {32 return password;33 }34 public void setPassword(String password) {35 this.password = password;36 }37 public int getAge() {38 return age;39 }40 public void setAge(int age) {41 this.age = age;42 }43 }3.添加一个UserController类,类中内容如下:1 package com.mvc.controller;23 import java.text.SimpleDateFormat;4 import java.util.Date;56 import javax.servlet.ServletOutputStream;7 import javax.servlet.http.HttpServletResponse;89 import org.springframework.stereotype.Controller;10 import org.springframework.beans.factory.annotation.Autowired;11 import org.springframework.web.bind.annotation.RequestMapping;12 import org.springframework.web.bind.annotation.ResponseBody;13 14 import com.mvc.po.User;15 import com.mvc.service.UserService;16 17 @Controller18 public class UserController {19 20 @Autowired21 private UserService userService;22 23 @RequestMapping("/export.do")24 public @ResponseBody String export(HttpServletResponse response){ 25 response.setContentType("application/binary;charset=utf-8");26 try{27 ServletOutputStream out=response.getOutputStream();28 String fileName=new String(("UserInfo "+ new SimpleDateFormat("yyyy-MM-dd").format(new Date())).getBytes(),"UTF-8");29 response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls");30 String[] titles = { "用户编号", "用户姓名", "用户密码", "用户年龄" }; 31 userService.export(titles, out);32 return "success";33 } catch(Exception e){34 e.printStackTrace();35 return "导出信息失败";36 }37 }38 }4.添加一个接口类UserService和实现类UserServiceImpl,类中内容如下:1 package com.mvc.service;2 3 import javax.servlet.ServletOutputStream;4 import com.mvc.po.User;5 6 public interface UserService {7 public void export(String[] titles, ServletOutputStream out);8 }1 package com.mvc.service.impl;23 import java.text.SimpleDateFormat;4 import java.util.List;56 import javax.servlet.ServletOutputStream;78 import com.mvc.dao.UserDAO;9 import com.mvc.po.User;10 import com.mvc.service.UserService;11 12 import org.apache.poi.hssf.usermodel.HSSFCell;13 import org.apache.poi.hssf.usermodel.HSSFCellStyle;14 import org.apache.poi.hssf.usermodel.HSSFRow;15 import org.apache.poi.hssf.usermodel.HSSFSheet;16 import org.apache.poi.hssf.usermodel.HSSFWorkbook;17 import org.springframework.beans.factory.annotation.Autowired;18 import org.springframework.stereotype.Service;19 20 @Service21 public class UserServiceImpl implements UserService {22 23 @Autowired24 private UserDAO userDAO;25 26 @Override27 public void export(String[] titles, ServletOutputStream out) { 28 try{29 // 第一步,创建一个workbook,对应一个Excel文件30 HSSFWorkbook workbook = new HSSFWorkbook();31 // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet32 HSSFSheet hssfSheet = workbook.createSheet("sheet1");33 // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short34 HSSFRow hssfRow = hssfSheet.createRow(0);35 // 第四步,创建单元格,并设置值表头 设置表头居中36 HSSFCellStyle hssfCellStyle = workbook.createCellStyle();37 //居中样式38 hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);39 40 HSSFCell hssfCell = null;41 for (int i = 0; i < titles.length; i++) {42 hssfCell = hssfRow.createCell(i);//列索引从0开始43 hssfCell.setCellValue(titles[i]);//列名144 hssfCell.setCellStyle(hssfCellStyle);//列居中显示 45 }46 47 // 第五步,写入实体数据 48 List users = userDAO.query(); 49 50 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");51 if(users != null && !users.isEmpty()){52 for (int i = 0; i < users.size(); i++) {53 hssfRow = hssfSheet.createRow(i+1); 54...
poi怎么实现word导入图片
1. 实际上还真就得一个一个set进去2. 我现在做的程序就有这部分机能,思路就是excel→sheet→row3. 然后遍历所有row,取出所有的cell放到一个存储用结构体中。
4. 无论如何,解析的过程都需要自己来写的。
5. 你的想法我明白,其实就是想要一个java与poi的databinding,定义好的数据模块可以自动和excel的对应列进行匹配。
但是这个东西确实就没有啊,人家只封装了读取excel内容,没有提供这样的模块,只有自己写啊。
即使是60个列,事实上绑定的逻辑也就只用写一次,而且大部分的内容只要复制粘贴就好了。
Java poi怎么导入
展开全部 本篇面向对象为Java的初学者,从下载必备软件到创建一个空白的POI工程,已经熟练掌握环境搭建的请跳过此文。
开发环境为windowsXP-SP2,Eclipse3.2,JDK1.5.07,其实差不多都行,不会有太大的差异。
本文从POI下载开始讲解,前提是开发环境包括系统变量等等已经正确设置完毕。
1.POI的下载截至本文发表,POI最新版本是3.0.1,距离上一个Final版本有3年了吧,以至于我差点儿就把他放弃了——以为没人管了。
官方的公告讲,这一版主要是追加了一些新的特性和BUG修正,不过稍微有点儿遗憾的是,还不能很好的操作Excel2007。
POI官方网址: ?http://poi.apache.org/ JAR包下载: ?http://apache.mirror.phpchina.com/poi/release/bin/poi-bin-3.0.1-FINAL-20070705.zip 源码下载: ?http://apache.mirror.phpchina.com/poi/release/src/poi-src-3.0.1-FINAL-20070705.zip 下载上面的JAR和源码(源码不是必须的,但是为了早日修得正果,深入系统的看看POI代码还是有必要的)并解压待用。
2.用Eclipse搭建项目? 打开Eclipse ?依次点击File->New->Java Project ?输入项目名称,本例中设置为POI ?单击完成 ?在项目上点击右键->New->Folder ?输入文件夹名称lib ?把刚才解压的poi-3.0.1-FINAL-20070705.jar复制过来 ?右键点击项目,选择Properties ?在左侧列表里选中Java Build Path,右侧选中Libraries ?点击Add JARs,选择POI项目的lib下的所有文件 ?两次OK确认,回到Eclipse界面 小技巧,快捷操作:可以用鼠标左键选中poi-3.0.1-FINAL-20070705.jar但不松开,拖到任务栏的Eclipse图标上等候1秒左右,Eclipse会自动弹起来,依然不松开移动到lib文件夹上,这个时候鼠标后面跟个十字符号,松开左键,就完成了复制动作。
这个是对整个windows系统都好用的快捷复制方式,视源盘符和目标盘符的不同偶尔会用到Ctrl键。
到此为止,我们做好了POI学习的前提准备,接下来将从最简单的文档创建开始一步一步学习怎样让POI更好的为我们工作。
第一讲 :基本的Excel读写本文主要演示一下POI的基本操作,例如怎样读取和创建一个具体的Excel文件。
按照惯例,拿HelloWorld说事儿。
说明:本文主要内容皆包含于官方帮助手册,之所以要拿出来,出于两个原因,手册是英文的+手册是对应2.5.1的。
核心代码如下,注释部分为讲解。
这里只挑干的讲,完整的代码请参考(下载代码)。
//创建一个空白的WorkBookHSSFWorkbook wb = new HSSFWorkbook();//基于上面的WorkBook创建属于此WorkBook的Sheet,//3.0.1版在使用全角Sheet名的时候不必再setEncdoing了,个人感觉方便了许多。
HSSFSheet st = wb.createSheet("测试页");//创建属于上面Sheet的Row,参数0可以是0~65535之间的任何一个,//注意,尽管参数是Int类型,但是Excel最多支持65536行HSSFRow row = st.createRow(0);//创建属于上面Row的Cell,参数0可以是0~255之间的任何一个,//同样,是因为Excel最大支持的列数为256列HSSFCell cell = row.createCell((short) 0);//设置此单元格的格式为文本,此句可以省略,Excel会自动识别。
//其他还有几种常用的格式,请参考本文底部的补充部分。
cell.setCellType(HSSFCell.CELL_TYPE_STRING);//此处是3.0.1版的改进之处,上一版可以直接setCellValue("Hello, World!"),//但是在3.0.1里,被deprecated了。
cell.setCellValue(new HSSFRichTextString("Hello, World!"));//创建一个文件输出流,指定到C盘根目录下(C盘都有吧?)//xls是Excel97-2003的标准扩展名,2007是xlsx,目前的POI能直接生产的还是xls格式,//如果此处把扩展名改成xlsx,在用Excel2007打开此文件时会报错。
FileOutputStream writeFile = new FileOutputStream("c:/helloworld.xls");//把WorkBook写到流里wb.write(writeFile);//记得手动关闭流,官方文档已经做了特别说明,说POI不负责关闭用户打开的流。
所以...writeFile.close();上面就是创建一个新文档的简易代码,下面的例子是读取刚才创建的Excel并把读取到的内容显示在控制台上。
//指定要读取的文件,本例使用上面生成的helloworld.xlsFileInputStream readFile = new FileInputStream("c:/helloworld.xls");//创建一个WorkBook,从指定的文件流中创建,即上面指定了的文件流HSSFWorkbook wb = new HSSFWorkbook(readFile);//获取名称为“测试页”的sheet//注意,如果不能确定具体的名称,可以用getSheetAt(int)方法取得SheetHSSFSheet st = wb.getSheet("测试页");//获得第一行,同上,如果此行没有被创建过则抛出异常HSSFRow row = st.getRow(0);//获取第一个单元格,如果没有被创建过则抛出异常HSSFCell cell = row.getCell((short) 0);//把cell中的内容按字符串方式读取出来,并显示在控制台上//注意,getRichStringCellValue()方法是3.0.1新追加的,//老版本中的getStringCellValue()方法被deprecated了System.out.println(cell.getRichStringCellValue());//记得关闭流readFile.close();上面对创建和读取分别举例说明,回顾...
转载请注明出处51数据库 » poi模板导出word换行