我需要从Java中读取包含文本和图像的Word .doc文件.我需要识别图像和文本并将它们分成2个文件.
我最近听说过"Apache POI".如何使用Apache POI读取Word .doc文件?
在普通的excel中,可以使用工作表左上角的小文本框命名单元格(或范围),例如,可以将单元格从H13命名为"total".
有没有办法通过Apache POI做到这一点?
有没有人知道是否可以从Java中将VB添加到Excel文档中?我基本上想要将一个数据透视表添加到工作表,并动态设置它的一些属性.我知道我可以从VB访问数据透视表设置,但不能直接从POI访问.
是否有任何现成的解决方案可以将Products.Poi与Subversion更新日志集成?如果没有,那将是编码的步骤?
每当提交SVN存储库引用日志消息中的问题ID时,我都希望在Poi问题跟踪器中添加注释.例如,可以用MantisBT做些什么.
刚看到崩溃,我们超过了255列.也许这个问题应该直接转向POI,但是我可以说我不想打扰他们,以便进一步开发它已经具有的增长性有用的API.;-) 限制页面不会逐步详细说明.
那么:假设输出在Excel中可读,您对实际限制的体验是什么?有没有人使用POI来评估和探索POI生成的Excel文件的软硬限制?
我可以在POI界面中快速找到的唯一限制如下.Microsoft列出了Excel 中的其他限制,这些限制似乎没有在POI中涵盖.
编辑:哎呀.刚刚意识到我们在过去的5年里没有更新过POI,所以下面的代码可能已经被替换了100次.
编辑:以下代码自2008年10月19日版本3.2以来没有变化.
/**
* @throws RuntimeException if the bounds are exceeded.
*/
private void checkBounds(int cellNum) {
if (cellNum > 255) {
throw new RuntimeException("You cannot have more than 255 columns "+
"in a given row (IV). Because Excel can't handle it");
}
else if (cellNum < 0) {
throw new RuntimeException("You cannot reference columns with an index of less then 0.");
}
}
Run Code Online (Sandbox Code Playgroud) 例如在数据库中考虑:
CREATE TABLE users (
id INTEGER IDENTITY PRIMARY KEY,
last_name VARCHAR (50) DEFAULT '' NOT NULL,
first_name VARCHAR (50) DEFAULT '' NOT NULL,
email VARCHAR(50) DEFAULT '' NOT NULL)
Run Code Online (Sandbox Code Playgroud)
并考虑使用Hibernate作为ORM与该数据库交互的程序.
在我看来,这意味着:
这是好习惯吗?请举例说明优缺点.
public void readExcel(String fileName)
try
{
FileInputStream myInput = new FileInputStream(fileName);
POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);
HSSFSheet mySheet = myWorkBook.getSheetAt(0);
Iterator rowIter = mySheet.rowIterator();
while(rowIter.hasNext())
{
HSSFRow myRow = (HSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
ArrayList cellStoreVector=new ArrayList();
String header_name = null;
while(cellIter.hasNext())
{
HSSFCell myCell = (HSSFCell) cellIter.next();
// if it is empty cell in my excel file its not added to
// array List
cellStoreVector.add(myCell);
}
cellVectorHolder.add(cellStoreVector);
}
}catch (Exception e)
{
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) 我有PHP变量,包含如下字符串:
http://domain.com/uploads/image1.jpg|||http://domain.com/uploads/image2.jpg|||http://domain.com/uploads/image3.jpg|||...
Run Code Online (Sandbox Code Playgroud)
我需要从该字符串中获取第一个图像URL,因此它将是字符串,直到第一个"|||" 字符.所以我需要进入变量的结果是:http://domain.com/uploads/image1.jpg
请帮我为它编写正确的PHP preg_match regexp模式.
谢谢!蒂姆
我正在使用 POI 从 Excel 文件中提取数据。(Excel 工作表中的第 5 列包含我的文件系统中存在的文件的名称)我循环遍历表的行(使用 POI 提取单元格的内容),并为每一行创建 Tika 的实例,并解析名为的文件第五列带有 Tika“parseToString(file)”,当文件是 Office 文档(excel、ppt、word)时,我收到此错误:
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: filesystem
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:185)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:131)
at org.apache.tika.parser.microsoft.WordExtractor.parse(WordExtractor.java:61)
at org.apache.tika.parser.microsoft.OfficeParser.parse(OfficeParser.java:182)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:197)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:197)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:135)
at org.apache.tika.Tika.parseToString(Tika.java:357)
at org.apache.tika.Tika.parseToString(Tika.java:423)
at org.apache.tika.Tika.parseToString(Tika.java:403)
at HP.BuildMailExcelDoc.getTextFromTika(BuildMailExcelDoc.java:355)
at HP.BuildMailExcelDoc.addExcelDoc(BuildMailExcelDoc.java:314)
at HP.BuildMailExcelDoc.buildDoc(BuildMailExcelDoc.java:196)
at HP.BuildMailExcelDoc.buildMailDoc(BuildMailExcelDoc.java:102)
at HP.BuildMailExcelDoc.indexDirectory(BuildMailExcelDoc.java:69)
at HP.BuildMailExcelDoc.indexDirectory(BuildMailExcelDoc.java:78)
at HP.BuildMailExcelDoc.buildDoc(BuildMailExcelDoc.java:63)
at HP.IndexGUI$1.mouseClicked(IndexGUI.java:281)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown …Run Code Online (Sandbox Code Playgroud) 我想解析以下网址:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi? db = nnucleotide& id = 22485891
结果我想出了以下方法:
public void parseXml2(String URL) {
DOMParser parser = new DOMParser();
try {
parser.parse(new InputSource(new URL(URL).openStream()));
Document doc = parser.getDocument();
NodeList nodeList = doc.getElementsByTagName("Item");
for (int i = 0; i < nodeList.getLength(); i++) {
Node n = nodeList.item(i);
Node actualNode = n.getFirstChild();
if (actualNode != null) {
System.out.println(actualNode.getNodeValue());
}
}
} catch (SAXException ex) {
Logger.getLogger(TaxMapperXml.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TaxMapperXml.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
使用此方法,我可以获取Item节点的值,但我不能使用它们的任何属性.我尝试使用NamedNodeMap尝试getAttribute(),但仍无济于事.
为什么我必须要 …
我使用以下代码使用POI从excel表中获取日期,
if (DateUtil.isCellDateFormatted(currentCell))
{
Date date = currentCell.getDateCellValue();
cellValue = date.getDate() + "/" + (date.getMonth() + 1) + "/" + (1900 + date.getYear());
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,Excel工作表的日期格式为MM/dd/yy.但是如果我使月份值大于12(即> = 13),则格式将更改为dd/MM/yy.
通过上面的代码,如果我将日期定为10/11/2010,它将月份作为10,将日期作为11.如果我像15/10/2010那样给出,我将月份作为10,将日期作为15.
但我需要保持一种格式为dd/MM/yyyy.我怎样才能做到这一点?
java ×8
apache-poi ×7
excel ×4
apache-tika ×1
dom ×1
hibernate ×1
ms-word ×1
parsing ×1
php ×1
plone ×1
preg-match ×1
regex ×1
svn ×1
vba ×1
xml ×1