使用POI的HWPF操作word(未解決中文亂碼問題)
public class TestPoi extends HttpServlet
{
?public void doGet(HttpServletRequest request, HttpServletResponse response)
???throws ServletException
?{
??File file = new File("D:\\b.doc");
??try
??{
???FileInputStream in = new FileInputStream("D:\\b.doc");
???// HWPFFileSystem hwpfsys = new HWPFFileSystem();
???// hwpfsys.getStream("d://b.doc");
???POIFSFileSystem pfs = new POIFSFileSystem(in);
???HWPFDocument hwpf = new HWPFDocument(pfs);
???// hwpf.write(hwpfsys.getStream("D://e.doc"));
???// Range range = new Range(0, (int) file.length(), hwpf);
???Range range = hwpf.getRange();
???StyleSheet styleSheet = hwpf.getStyleSheet();
???TableIterator it = new TableIterator(range);
//遍歷一個DOC中的所有表格
???while (it.hasNext())
???{
????Table tb = (Table) it.next();
? //遍歷表格的行
????for (int i = 0; i < tb.numRows(); i++)
????{
?????TableRow tr = tb.getRow(i);
//遍歷表格的列
?????for (int j = 0; j < tr.numCells(); j++)
?????{
??? //往表格中插入數據?
?????TableCell td = tr.getCell(j);
??????String text = "第" + i + "行第" + j + "列";
??????int p = td.numParagraphs();
??????Paragraph para = td.getParagraph(p);
??????ParagraphProperties pp = new ParagraphProperties();
??????para.insertBefore(text);
?????}
????}
???}
//在表格外面插入內容??
?CharacterProperties cp = new CharacterProperties();
???cp.setBold(true);
???cp.setCharacterSpacing(10);
???cp.setChse(cp.SPRM_CHARSCALE);
???cp.setCapitalized(true);
???int p = range.numParagraphs();
???Paragraph para = range.getParagraph(p - 1);
???para.insertAfter("test poi successful!", cp);
???para.insertAfter("測試成功", cp);
???response.setContentType("application/vnd.ms-word");
???response.setHeader("Content-disposition", "attachment;filename=e.doc");
???OutputStream out = response.getOutputStream();
???hwpf.write(out);
???out.close();
??}
??catch (Exception ex)
??{
???ex.printStackTrace();
??}
?}
?public void doPost(HttpServletRequest request, HttpServletResponse response)
???throws ServletException
?{
??doGet(request, response);
?}
}