首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

java中怎么使用poi创建、编辑word文档! (急@@@)

2012-01-12 
求助:java中如何使用poi创建、编辑word文档!!!(急....@@@)如题:java中如何使用poi创建、编辑word文档!!!哪位

求助:java中如何使用poi创建、编辑word文档!!! (急....@@@)
如题:
        java中如何使用poi创建、编辑word文档!!!  

        哪位有例子代码请贴一下,多谢!!!!!!!

[解决办法]
poi项目应该自带例子,里面应该有实例代码
[解决办法]
如何在Java内嵌入PPT
http://blog.csdn.net/bovy/archive/2007/04/06/1554922.aspx
把Word/Excel/Power Point嵌入到Java程序内
http://blog.csdn.net/bovy/archive/2007/04/06/1554447.aspx
[解决办法]
我最近也在学:仅有的一点资料
import java.io.*;
import java.util.*;
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.util.LittleEndian;

public class WordTest {
public WordTest() {
}
public static boolean writeWordFile(String path, String content) {
boolean w = false;
try {

// byte b[] = content.getBytes( "ISO-8859-1 ");
byte b[] = content.getBytes();

ByteArrayInputStream bais = new ByteArrayInputStream(b);

POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();

DocumentEntry de = directory.createDocument( "WordDocument ", bais);

FileOutputStream ostream = new FileOutputStream(path);

fs.writeFilesystem(ostream);

bais.close();
ostream.close();

} catch (IOException e) {
e.printStackTrace();
}
return w;
}
public static void main(String[] args){
boolean b = writeWordFile( "E://test.doc ", "hello ");
}
}
/*
public String extractText(InputStream in) throws IOException {
ArrayList text = new ArrayList();
POIFSFileSystem fsys = new POIFSFileSystem(in);

DocumentEntry headerProps = (DocumentEntry) fsys.getRoot().getEntry( "WordDocument ");
DocumentInputStream din = fsys.createDocumentInputStream( "WordDocument ");
byte[] header = new byte[headerProps.getSize()];

din.read(header);
din.close();
// Prende le informazioni dall 'header del documento
int info = LittleEndian.getShort(header, 0xa);

boolean useTable1 = (info & 0x200) != 0;

//boolean useTable1 = true;

// Prende informazioni dalla piece table
int complexOffset = LittleEndian.getInt(header, 0x1a2);
//int complexOffset = LittleEndian.getInt(header);

String tableName = null;
if (useTable1) {
tableName = "1Table ";
} else {
tableName = "0Table ";
}

DocumentEntry table = (DocumentEntry) fsys.getRoot().getEntry(tableName);
byte[] tableStream = new byte[table.getSize()];

din = fsys.createDocumentInputStream(tableName);

din.read(tableStream);
din.close();

din = null;
fsys = null;
table = null;
headerProps = null;

int multiple = findText(tableStream, complexOffset, text);


StringBuffer sb = new StringBuffer();
int size = text.size();
tableStream = null;

for (int x = 0; x < size; x++) {

WordTextPiece nextPiece = (WordTextPiece) text.get(x);
int start = nextPiece.getStart();
int length = nextPiece.getLength();

boolean unicode = nextPiece.usesUnicode();
String toStr = null;
if (unicode) {
toStr = new String(header, start, length * multiple, "UTF-16LE ");
} else {
toStr = new String(header, start, length, "ISO-8859-1 ");
}
sb.append(toStr).append( " ");

}
return sb.toString();
}

private static int findText(byte[] tableStream, int complexOffset, ArrayList text)
throws IOException {
//actual text
int pos = complexOffset;
int multiple = 2;
//skips through the prms before we reach the piece table. These contain data
//for actual fast saved files
while (tableStream[pos] == 1) {
pos++;
int skip = LittleEndian.getShort(tableStream, pos);
pos += 2 + skip;
}
if (tableStream[pos] != 2) {
throw new IOException( "corrupted Word file ");
} else {
//parse out the text pieces
int pieceTableSize = LittleEndian.getInt(tableStream, ++pos);
pos += 4;
int pieces = (pieceTableSize - 4) / 12;
for (int x = 0; x < pieces; x++) {
int filePos =
LittleEndian.getInt(tableStream, pos + ((pieces + 1) * 4) + (x * <img src= "/images/forum/smiles/icon_cool.gif "/> + 2);
boolean unicode = false;
if ((filePos & 0x40000000) == 0) {
unicode = true;
} else {
unicode = false;
multiple = 1;
filePos &= ~(0x40000000); //gives me FC in doc stream
filePos /= 2;
}
int totLength =
LittleEndian.getInt(tableStream, pos + (x + 1) * 4)
- LittleEndian.getInt(tableStream, pos + (x * 4));

WordTextPiece piece = new WordTextPiece(filePos, totLength, unicode);
text.add(piece);

}

}
return multiple;
}
public static void main(String[] args){
WordTest w = new WordTest();
POIFSFileSystem ps = new POIFSFileSystem();
try{

File file = new File( "C:\\test.doc ");

InputStream in = new FileInputStream(file);
String s = w.extractText(in);
System.out.println(s);


}catch(Exception e){
e.printStackTrace();
}

}
public boolean writeWordFile(String path, String content) {
boolean w = false;
try {

// byte b[] = content.getBytes( "ISO-8859-1 ");
byte b[] = content.getBytes();


ByteArrayInputStream bais = new ByteArrayInputStream(b);

POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();

DocumentEntry de = directory.createDocument( "WordDocument ", bais);

FileOutputStream ostream = new FileOutputStream(path);

fs.writeFilesystem(ostream);

bais.close();
ostream.close();

} catch (IOException e) {
e.printStackTrace();
}

return w;
}

}

class WordTextPiece {
private int _fcStart;
private boolean _usesUnicode;
private int _length;

public WordTextPiece(int start, int length, boolean unicode) {
_usesUnicode = unicode;
_length = length;
_fcStart = start;
}
public boolean usesUnicode() {
return _usesUnicode;
}

public int getStart() {
return _fcStart;
}
public int getLength() {
return _length;
}

}
*/


热点排行