﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-普通人的奇迹-随笔分类-文档处理</title><link>http://www.blogjava.net/leekiang/category/29573.html</link><description>MDA/MDD/TDD/DDD/DDDDDDD</description><language>zh-cn</language><lastBuildDate>Tue, 08 Apr 2008 10:27:53 GMT</lastBuildDate><pubDate>Tue, 08 Apr 2008 10:27:53 GMT</pubDate><ttl>60</ttl><item><title>vCalendar(ics)，vCard格式及Outlook</title><link>http://www.blogjava.net/leekiang/archive/2008/04/03/190640.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Thu, 03 Apr 2008 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/04/03/190640.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/190640.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/04/03/190640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/190640.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/190640.html</trackback:ping><description><![CDATA[http://hi.baidu.com/mn232nm/blog/item/aaa034adb50022094a36d620.html<br />http://hi.baidu.com/feige05/blog/item/3d7339184c8d9d0334fa4166.html<br /><a target="_blank" href="http://support.microsoft.com/kb/287625/zh-cn">http://support.microsoft.com/kb/287625/zh-cn</a><br /><a target="_blank" href="http://topic.csdn.net/u/20070426/13/3180348c-ef43-4725-ac97-d2b81e7af427.html"> 按vcalendar开发理论：用JAVA生成vcalendar代码，然后发邮件出去，当用outlook2003版本以上的MS   outlook收到该邮件时，可以把这个vcalendar加到outlook的calendar中去。</a><br /><a target="_blank" href="http://www.faqs.org/rfcs/rfc2445.html">.ics格式的RFC2445规范</a><br /><a target="_blank" href="http://www.ibm.com/developerworks/cn/xml/x-matters46/?ca=dwcn-newsletter-xml">XML 问题: 比微格式更轻巧：纤格式（Picoformat）</a><br /><a target="_blank" href="http://www.yeeyan.com/articles/view/3695/1259">iCalendar在移动设备</a><br /><img src ="http://www.blogjava.net/leekiang/aggbug/190640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-04-03 16:15 <a href="http://www.blogjava.net/leekiang/archive/2008/04/03/190640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poi笔记</title><link>http://www.blogjava.net/leekiang/archive/2008/03/14/186391.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Fri, 14 Mar 2008 14:26:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/03/14/186391.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/186391.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/03/14/186391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/186391.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/186391.html</trackback:ping><description><![CDATA[注意用poi解析器从word中抽取文本后，输入流会关闭，原因如下:<br />InputStreams passed to POIFSFileSystem are now automatically closed. A
warning is generated for people who might've relied on them not being
closed before, and a wrapper to restore the old behaviour is
supplied(POI-DEVELOPERS)<br />在POI3.0.3会修正该问题。<br /><br />1,poi格子里的文本如何换行<br />  加"\n",同时设置style.setWrapText(true);<br />  <br />2,style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);<br /> style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);<br /> 设置前景色,有半透明的效果<br /> <br />3，sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) 1));// 起始行、起始列、结束行、结束列<br />   被合并了的单元格不需要生成<br /><br />4，sheet.createFreezePane(2, 1);<br />  冻结窗口,左上角为行参和列参的起始处，从0开始<br /> <br />5,列宽sheet.setColumnWidth((short) 0, (short) (35.7 * 110));//第一个参数为列的下标，110为想设置的宽度像素<br />  http://www.cnblogs.com/interboy/archive/2007/08/27/872028.html<br /><br />6,行高row.setHeight((short) (15.625 * 100));//100为要设置的行高的像素<br /><br /><br />7, POI將註解的部分，視做一個文字方塊，我們可以設定它的大小及內容，然後將之指定給某特定的Cell。<br />节录部分Code如下：<br />HSSFPatriarch patr = sheet.createDrawingPatriarch();<br />HSSFComment comment = patr.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short) 8, rowCount));<br />HSSFRichTextString str = new HSSFRichTextString("TEST");<br />comment.setString(str);<br />comment.setAuthor("TEST");<br />cell.setCellComment(comment);<br /><br />8，sheet的中文名<br />workbook.setSheetName(0,"统计",(short)1);<br /><br />9， 先定义一个基本样式，再复制样式的属性。不知何故不能clonebean<br />  HSSFCellStyle headerStyle = workbook.createCellStyle();<br />  PropertyUtils.copyProperties(headerStyle, baseStyle);//<br /><br />10, 输出，中文名<br />        response.reset();<br />        response.setContentType("applicationnd.ms-excel");<br />        response.addHeader("Content-disposition",<br />                "attachment;filename="+new String("统计".getBytes("GBK"), "ISO-8859-1")+".xls");<br />        ServletOutputStream out = response.getOutputStream();<br />        workbook.write(out);<br />        out.flush();<br />        out.close();<br />        <br />        <br />http://blog.csdn.net/impeller/archive/2007/10/29/1855368.aspx<br /><a target="_blank" href="http://blog.csdn.net/seawavecau/archive/2007/04/19/1570928.aspx">解析Excel注释，填充并生成报表的一个例子</a><br /><br /><br /><img src ="http://www.blogjava.net/leekiang/aggbug/186391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-03-14 22:26 <a href="http://www.blogjava.net/leekiang/archive/2008/03/14/186391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>备忘</title><link>http://www.blogjava.net/leekiang/archive/2008/02/26/182113.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Mon, 25 Feb 2008 20:44:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/02/26/182113.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/182113.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/02/26/182113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/182113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/182113.html</trackback:ping><description><![CDATA[
		<a target="_blank" href="http://hi.baidu.com/xingfupingguo/blog/item/3479882441e708024c088da8.html">有关《java抽取word,pdf的四种武器》的实验和总结</a>
		<br />
		<a target="_blank" href="http://csdncannon.bokee.com/991318.html">Java抽取Word，PDF的四种武器</a>
		<br />
		<a target="_blank" href="http://book.csdn.net/bookfiles/312/10031212845.shtml">使用poi来抽取excel文本</a>
		<br />
		<a target="_blank" href="http://pdfhome.hope.com.cn/Article.aspx?CID=bf51a5b6-78a5-4fa3-9310-16e04aee8c78&amp;AID=ec9e5450-4a7a-4b72-89fe-a4e06d04d5e6">用pdfbox解析pdf文件</a>
		<br />
		<a target="_blank" href="http://zjsoft.javaeye.com/blog/163247">poi</a>
		<br />
		<a target="_blank" href="http://zjsoft.javaeye.com/blog/130801">spring集成的Hibernate一窥</a>
		<br />
		<a target="_blank" href="http://zjsoft.javaeye.com/blog/143431">使用sqlquery</a>
		<br />
		<a target="_blank" href="http://www.zxbc.cn/html/javajq/0814083294452.html">全文检索Lucene的实现方法</a>
		<br />
<img src ="http://www.blogjava.net/leekiang/aggbug/182113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-02-26 04:44 <a href="http://www.blogjava.net/leekiang/archive/2008/02/26/182113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>nekohtml的使用</title><link>http://www.blogjava.net/leekiang/archive/2008/02/21/181163.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Thu, 21 Feb 2008 10:29:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/02/21/181163.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/181163.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/02/21/181163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/181163.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/181163.html</trackback:ping><description><![CDATA[
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<span style="color: rgb(0, 0, 255);">    import</span>
				<span style="color: rgb(0, 0, 0);"> org.cyberneko.html.parsers.DOMFragmentParser;<br />     import org.apache.html.dom.HTMLDocumentImpl;<br />    </span>
				<span style="color: rgb(0, 0, 255);">import</span>
				<span style="color: rgb(0, 0, 0);"> org.w3c.dom.DocumentFragment;<br />    </span>
				<span style="color: rgb(0, 0, 255);">import</span>
				<span style="color: rgb(0, 0, 0);"> org.w3c.dom.Node;<br />    </span>
				<span style="color: rgb(0, 0, 255);">import</span>
				<span style="color: rgb(0, 0, 0);"> org.w3c.dom.NodeList;<br />    </span>
				<span style="color: rgb(0, 0, 255);">import</span>
				<span style="color: rgb(0, 0, 0);"> org.xml.sax.InputSource;<br />    </span>
				<span style="color: rgb(0, 0, 255);">import</span>
				<span style="color: rgb(0, 0, 0);"> org.xml.sax.SAXException;<br /><br />    </span>
				<span style="color: rgb(0, 128, 0);">/**</span>
				<span style="color: rgb(0, 128, 0);">
						<br />     * 从html中抽取纯文本<br />     * <br />     * </span>
				<span style="color: rgb(128, 128, 128);">@param</span>
				<span style="color: rgb(0, 128, 0);"> content<br />     * </span>
				<span style="color: rgb(128, 128, 128);">@return</span>
				<span style="color: rgb(0, 128, 0);">
						<br />     * </span>
				<span style="color: rgb(128, 128, 128);">@throws</span>
				<span style="color: rgb(0, 128, 0);"> UnsupportedEncodingException<br />     </span>
				<span style="color: rgb(0, 128, 0);">*/</span>
				<span style="color: rgb(0, 0, 0);">
						<br />    </span>
				<span style="color: rgb(0, 0, 255);">public</span>
				<span style="color: rgb(0, 0, 0);"> String extractTextFromHTML(String content)<br />            </span>
				<span style="color: rgb(0, 0, 255);">throws</span>
				<span style="color: rgb(0, 0, 0);"> UnsupportedEncodingException {<br />        DOMFragmentParser parser </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">new</span>
				<span style="color: rgb(0, 0, 0);"> DOMFragmentParser();<br />        DocumentFragment node </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">new</span>
				<span style="color: rgb(0, 0, 0);"> HTMLDocumentImpl().createDocumentFragment();<br />        InputStream is </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">new</span>
				<span style="color: rgb(0, 0, 0);"> ByteArrayInputStream(content.getBytes());<br />        </span>
				<span style="color: rgb(0, 0, 255);">try</span>
				<span style="color: rgb(0, 0, 0);"> {<br />            parser.parse(</span>
				<span style="color: rgb(0, 0, 255);">new</span>
				<span style="color: rgb(0, 0, 0);"> InputSource(is), node);<br />        } </span>
				<span style="color: rgb(0, 0, 255);">catch</span>
				<span style="color: rgb(0, 0, 0);"> (IOException e) {<br />            e.printStackTrace();<br />        } </span>
				<span style="color: rgb(0, 0, 255);">catch</span>
				<span style="color: rgb(0, 0, 0);"> (SAXException se) {<br />            se.printStackTrace();<br />        }<br /><br />        StringBuffer newContent </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">new</span>
				<span style="color: rgb(0, 0, 0);"> StringBuffer();<br />        </span>
				<span style="color: rgb(0, 0, 255);">this</span>
				<span style="color: rgb(0, 0, 0);">.getText(newContent, node);<br /><br />        String str </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> (</span>
				<span style="color: rgb(0, 0, 255);">new</span>
				<span style="color: rgb(0, 0, 0);"> String(<br />                newContent.toString().getBytes(</span>
				<span style="color: rgb(0, 0, 0);">"</span>
				<span style="color: rgb(0, 0, 0);">Windows-1252</span>
				<span style="color: rgb(0, 0, 0);">"</span>
				<span style="color: rgb(0, 0, 0);">), </span>
				<span style="color: rgb(0, 0, 0);">"</span>
				<span style="color: rgb(0, 0, 0);">GBK</span>
				<span style="color: rgb(0, 0, 0);">"</span>
				<span style="color: rgb(0, 0, 0);">));<br />        </span>
				<span style="color: rgb(0, 0, 255);">return</span>
				<span style="color: rgb(0, 0, 0);"> str;<br />    }<br /><br />    </span>
				<span style="color: rgb(0, 0, 255);">private</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">void</span>
				<span style="color: rgb(0, 0, 0);"> getText(StringBuffer sb, Node node) {<br />        </span>
				<span style="color: rgb(0, 0, 255);">if</span>
				<span style="color: rgb(0, 0, 0);"> (node.getNodeType() </span>
				<span style="color: rgb(0, 0, 0);">==</span>
				<span style="color: rgb(0, 0, 0);"> Node.TEXT_NODE) {<br />            sb.append(node.getNodeValue());<br />        }<br />        NodeList children </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> node.getChildNodes();<br />        </span>
				<span style="color: rgb(0, 0, 255);">if</span>
				<span style="color: rgb(0, 0, 0);"> (children </span>
				<span style="color: rgb(0, 0, 0);">!=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">null</span>
				<span style="color: rgb(0, 0, 0);">) {<br />            </span>
				<span style="color: rgb(0, 0, 255);">int</span>
				<span style="color: rgb(0, 0, 0);"> len </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> children.getLength();<br />            </span>
				<span style="color: rgb(0, 0, 255);">for</span>
				<span style="color: rgb(0, 0, 0);"> (</span>
				<span style="color: rgb(0, 0, 255);">int</span>
				<span style="color: rgb(0, 0, 0);"> i </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">0</span>
				<span style="color: rgb(0, 0, 0);">; i </span>
				<span style="color: rgb(0, 0, 0);">&lt;</span>
				<span style="color: rgb(0, 0, 0);"> len; i</span>
				<span style="color: rgb(0, 0, 0);">++</span>
				<span style="color: rgb(0, 0, 0);">) {<br />                getText(sb, children.item(i));<br />            }<br />        }<br />    }</span>
		</div>
		<br />1，nekohtml1.9.6.1版本用到了jdk5的Arrays.hashCode等方法，为兼容jdk1.4,<br />  故采用nekohtml1.9.6版本<br />2，需要xerces.jar支持<br />3，<br />   http://hi.baidu.com/walkandsing/blog/item/f5743634c6ba2e3a5bb5f5e5.html<br /><br /><img src ="http://www.blogjava.net/leekiang/aggbug/181163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-02-21 18:29 <a href="http://www.blogjava.net/leekiang/archive/2008/02/21/181163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>