Java 实现word文档生成
来源:互联网 发布:手机做电子相册的软件 编辑:程序博客网 时间:2024/06/13 02:22
Java实现word文档生成
(1)简单的word文档的生成,没有for循环输出数据。
创建PoiUtil类
package wordTest;
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.model.io.HWPFOutputStream;
import org.apache.poi.hwpf.usermodel.Range;
public class PoiUtil {
public static void main(String[] args) {
String path = "G:\\wordTest.doc";
Map<String, String> map = new HashMap<String, String>();
map.put("begDate", "2015-02-03");
map.put("endDate", "2015-02-03");
map.put("deptName", "日报");
map.put("reportName", "Froan");
map.put("reportDate", "2015-02-03");
map.put("content", "Hello world! I am a gril.......");
String newPath = "G:\\生成的测试Word.doc";
replaceDoc(path,newPath, map);
// cp(path,newPath);
}
/**
*读取word模板并替换变量
* @param
*文件模板路径
* @throws IOException
*/
public static boolean replaceDoc(String srcPath,String newPath,Map<String,String> map)
{
//读取word模板
try {
FileInputStream fis = new FileInputStream(new File(srcPath));
HWPFDocument doc = new HWPFDocument(fis);
// XSSFWorkbook doc=new XSSFWorkbook ();
//读取word文本内容
Range bodyRange = doc.getRange();
for(Map.Entry<String,String> entry : map.entrySet()){
bodyRange.replaceText("${"+entry.getKey()+"}", entry.getValue());
}
ByteArrayOutputStream ostream = new ByteArrayOutputStream();
doc.write(ostream);
OutputStream outs = new FileOutputStream(newPath);
outs.write(ostream.toByteArray());
outs.close();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
/**
*拷贝文件
*/
public static final boolean cp(String oldName,String newName){
try {
File file = new File(oldName);
if(!file.exists()||!file.isFile()){
return false;
}
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(newName);
byte[] buff = new byte[8912];
int byteRead = 0;
while((byteRead=fis.read(buff,0,8912))>0){
fos.write(buff,0,byteRead);
}
fis.close();
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("File copy error:"+e);
return false;
}
return true;
}
public static boolean writeDoc(String path,String text){
boolean res = false;
try {
byte b[]= text.getBytes();
FileOutputStream fs = new FileOutputStream(path);
HWPFOutputStream hos = new HWPFOutputStream();
hos.write(b,0,b.length);
hos.writeTo(fs);
hos.close();
res = true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
res = false;
}
return res;
}
}
所需jar包
另外需要创建word导出模板,如下
备注:该功能实现的只是在本地生成word文档,如果放在服务器上运行只是将word生成到了服务器指定位置,不会下载到客户端。
0 0
- Java 实现word文档生成
- Java生成word文档
- JAVA生成Word文档
- JAVA生成Word文档
- JAVA生成Word文档
- java 生成word文档
- java生成word文档
- java生成word文档
- java 生成word文档
- JAVA生成Word文档
- java 生成word文档
- java 生成word文档
- 实现动态生成Word文档
- PHP实现生成word文档
- 用java生成word文档
- 用java生成word文档
- 使用java生成word文档
- 用java生成word文档
- 第16周项目1-验证算法(2)希尔排序
- 使用python进行数据迁移重组之mysql工具类
- 量化分析师的Python日记【第2天:再接着介绍一下Python呗】
- 约瑟夫环问题
- ibatis中动态查询中的常用属性
- Java 实现word文档生成
- 蓝桥杯BASIC-16(分解质因数)
- java动态代理(JDK和cglib)
- 第九周项目4-广义表算法库及应用(1)
- 很不错的 Netty 博客专栏(转载)
- cocos2d学习笔记——基础控件
- 第12周项目4 - 利用遍历思想求解图问题(5)
- 第十六周项目1—直接插入排序 折半插入排序
- 第十六周项目1-验证算法(2)希尔排序