javaword
㈠ 如何用java生成word
jacob,相关资料你可以去查找看看
㈡ 使用java如何直接往word文件中写入内容最好有详细的介绍和源代码
用流就可以啊,不过要设置好编码格式,否则写进去的全是乱码
㈢ java操作word 的有哪几种方式
java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估
计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作
方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关
于读的好办法。经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。rtf格式文件表
面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。
----- 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。
----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。
1、采用字节的形式读取rtf模板内容
2、将可变的内容字符串转为rtf编码
3、替换原文中的可变部分,形成新的rtf文档
主要程序如下:
public String bin2hex(String bin) {
char[] digital = "0123456789ABCDEF".toCharArray();
StringBuffer sb = new StringBuffer("");
byte[] bs = bin.getBytes();
int bit;
for (int i = 0; i < bs.length;i++) {
bit = (bs[i] & 0x0f0)
>> 4;
sb.append("\\'");
sb.append(digital[bit]);
bit = bs[i] & 0x0f;
sb.append(digital[bit]);
}
return sb.toString();
}
public String readByteRtf(InputStream ins, String path){
String sourcecontent =
"";
try{
ins = new
FileInputStream(path);
byte[] b
= new byte[1024];
if (ins == null) {
System.out.println("源模板文件不存在");
}
int bytesRead = 0;
while (true) {
bytesRead = ins.read(b, 0, 1024); // return final read bytes
counts
if(bytesRead == -1) {// end of InputStream
System.out.println("读取模板文件结束");
break;
}
sourcecontent += new String(b, 0, bytesRead); // convert to string
using bytes
}
}catch(Exception e){
e.printStackTrace();
}
㈣ 在Java中如何实现word的插入功能
你所谓的插入word是将整个word文档插入数据库还是??
还是先生成word文档 再插入数据
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.sql.BLOB;
public class OracleBlob {
private DBstep.iDBManager2000 DbaObj ;
private File file = null;
public OracleBlob() {
DbaObj=new DBstep.iDBManager2000(); //创建数据库对象
}
public void insert(String infile) throws Exception {
FileInputStream fis = null;
int iFileId = -1;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//生成随机码
java.util.Date dt=new java.util.Date();
long lg=dt.getTime();
Long ld=new Long(lg);
String mRecordID=ld.toString();
file = new File(infile);
fis = new FileInputStream(file);
//得到数据库
iFileId = DbaObj.GetMaxID("INFO_DOCUMENT_FILE","FileId");
if (DbaObj.OpenConnection()) {
DbaObj.Conn.setAutoCommit(false);
String sql="insert into INFO_DOCUMENT_FILE(FileID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,empty_blob(),?,?,? )";
pstmt = DbaObj.Conn.prepareStatement(sql);
pstmt.setInt(1, iFileId);
pstmt.setString(2, mRecordID);
pstmt.setString(3, mRecordID+".doc");
pstmt.setString(4, "doc");
pstmt.setLong(5,file.length());
pstmt.setDate(6, DbaObj.GetDate());
pstmt.setString(7, "");
pstmt.setString(8, "");
pstmt.setString(9, "测试通用版本=="); // "通用版本"
pstmt.executeUpdate();
pstmt = DbaObj.Conn.prepareStatement("select FileBody,FileSize from INFO_DOCUMENT_FILE where RecordID='"+mRecordID+"' for update");
rs = pstmt.executeQuery();
while (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("FileBody");
OutputStream os = blob.getBinaryOutputStream();
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buf = new byte[rs.getInt("FileSize")];
int len = 0;
if ((len = bis.read(buf)) != -1) {
os.write(buf, 0, len);
os.flush();
}
os.close();
bis.close();
}
DbaObj.Conn.commit();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
fis.close();
DbaObj.CloseConnection();
}
}
public void readDoc(String outfile,String id)throws Exception{
FileOutputStream fos = null;
InputStream is = null;
String Sql = "SELECT FileBody,FileSize FROM info_document_file WHERE RecordID='" + id + "'";
try {
if (DbaObj.OpenConnection()) {
try {
ResultSet result = DbaObj.ExecuteQuery(Sql);
if (result.next()) {
try {
int fileSize=result.getInt("FileSize");
Blob blob=result.getBlob("FileBody");
file = new File(outfile);
if(!file.exists())
{
file.createNewFile();//如果文件不存在,则创建
}
fos = new FileOutputStream(file);
is = blob.getBinaryStream();// 读出数据后转换为二进制流
byte[] data = new byte[fileSize];
int size = 0;
while((size = is.read(data)) != -1)
{
fos.write(data,0,size);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
result.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
finally
{
DbaObj.CloseConnection();
}
}
public static void main(String args[])
{
OracleBlob blob=new OracleBlob();
try {
blob.readDoc("c://test.doc", "1281088075378");
//blob.insert("c://信息处WebService接口文档.doc");
} catch (Exception e) {
e.printStackTrace();
}
}
}
㈤ 使用java代码下载word文件
我同事在做项目的时候也遇到这个问题,应该是插件本身生成的docx文件是xml格式的,有些版本的word打开是会有提示,如果没有必要最好生成doc格式的word
㈥ 在Java中怎么实现在线编辑Word
web开发语言操作word的功能最好还是专业的控件,如果不想花钱可以使用SOAOFFICE绿色版
㈦ java怎么导入word模板
我有jacbo操作word的大多基本方法。你留下邮箱我发给你。
㈧ 用java怎么实现对word的在线编辑
WORD在线编辑的方案有几种。
1)采用网页插件,比如PageOffice,这种方案实际是调用本地Office进行编辑,确切的说是网页编辑而非在线编辑。
2)采用微软的OWA,这个是网页版的Office,好处确实是Word,缺点是网页版功能比本地版本弱,开发难以得到微软的支持,坑很多,碰到了也不知道怎么解决。
与之接近的是一起写,石墨这样的类Word编辑,这个就不是原生word格式,是格式转换后的在线编辑。
3)采用UZER.ME的SDK,UZER.ME支持网页内无插件使用各种原生应用,当然也包括Word,本地也无需安装Office,全平台支持。缺点是需要服务器资源较多。
在线编辑主要还是前端的活,主要用JavaScript做,当然,上面几种方案后台用Java都是可以也是需要的。
㈨ java中的forword怎么用的
request.forward 转发
地址栏不变,客户端服务器交互2次,可以读到前一个页面里request里存的值
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面
rd.forward(request, response);
}