Java读取Excel2007

问题描述

2003能正常读取到里面的内容,但是,2007为什么读出来的全是像xml的内容。求解! 问题补充:blessed24 写道

解决方案

这是我前段时间写的代码,在jdk1.4也能用。你可以参考下 public String readExcel(String url) { String content = ""; ZipFile xlsxFile = null; HttpURLConnection conn = null; BufferedReader br = null; InputStream is = null; try { URL u = new URL(url); conn = (HttpURLConnection) u.openConnection(); is = conn.getInputStream(); //1.先将2007文件临时保存到本地硬盘中 String tempfilename = "D:\xlsx_2007.xlsx"; FileOutputStream fos = new FileOutputStream(tempfilename); byte[] bytes = new byte[8 * 1204]; int length = -1; while ( (length = is.read(bytes)) != -1) { fos.write(bytes, 0, length); } //2.再将文件中硬盘中读取出来 xlsxFile = new ZipFile(new File(tempfilename)); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //先读取sharedStrings.xml这个文件备用 ZipEntry sharedStringXML = xlsxFile.getEntry("xl/sharedStrings.xml"); InputStream sharedStringXMLIS = xlsxFile.getInputStream(sharedStringXML); org.w3c.dom.Document sharedString = dbf.newDocumentBuilder().parse(sharedStringXMLIS); org.w3c.dom.NodeList str = sharedString.getElementsByTagName("t"); String sharedStrings[] = new String[str.getLength()]; for (int n = 0; n < str.getLength(); n++) { org.w3c.dom.Element element = (org.w3c.dom.Element) str.item(n); if(element.getFirstChild() != null){ sharedStrings[n] = element.getFirstChild().getNodeValue(); content = content + sharedStrings[n]; } } //找到解压文件夹里的workbook.xml,此文件中包含了这张工作表中有几个sheet ZipEntry workbookXML = xlsxFile.getEntry("xl/workbook.xml"); InputStream workbookXMLIS = xlsxFile.getInputStream(workbookXML); org.w3c.dom.Document doc = dbf.newDocumentBuilder().parse(workbookXMLIS); //获取一共有几个sheet org.w3c.dom.NodeList nl = doc.getElementsByTagName("sheet"); for (int i = 0; i < nl.getLength(); i++) { org.w3c.dom.Element element = (org.w3c.dom.Element) nl.item(i); //将node转化为element,用来得到每个节点的属性 content = content + element.getAttribute("name"); ZipEntry sheetXML = xlsxFile.getEntry("xl/worksheets/sheet" + (i +1) +".xml"); InputStream sheetXMLIS = xlsxFile.getInputStream(sheetXML); org.w3c.dom.Document sheetdoc = dbf.newDocumentBuilder().parse(sheetXMLIS); org.w3c.dom.NodeList rowdata = sheetdoc.getElementsByTagName("row"); for (int j = 1; j < rowdata.getLength(); j++) { org.w3c.dom.Element row = (org.w3c.dom.Element) rowdata.item(j); //根据行得到每个行中的列 org.w3c.dom.NodeList columndata = row.getElementsByTagName("c"); List tempList = new ArrayList(); ///放置页面需要导入的数据 for (int k = 0; k < columndata.getLength(); k++) { org.w3c.dom.Element column = (org.w3c.dom.Element) columndata.item(k); org.w3c.dom.NodeList values = column.getElementsByTagName("v"); org.w3c.dom.Element value = (org.w3c.dom.Element) values.item(0); if (column.getAttribute("t") != null & column.getAttribute("t").equals("s")) { //如果是共享字符串则在sharedstring.xml里查找该列的值 String c = value.getFirstChild().getNodeValue(); content = content + c; } else { //System.out.println(value.getFirstChild().getNodeValue()); } } } } Pattern p = Pattern.compile("\s*|t|r|n"); Matcher m = p.matcher(content); content = m.replaceAll(""); } catch (Exception ex) { }finally{ if(is != null){ try { is.close(); } catch (IOException ex1) { } is = null; } if(conn != null){ conn.disconnect(); } } return content; }
解决方案二:
呃 不过发现上面的poi3.7 rc1好像不支持office2007 晕试试这个poi3.7 rc2http://zh.sourceforge.jp/projects/poi-jdk14/releases/51911
解决方案三:
JDK1.4有的 试试http://download.csdn.net/detail/ch1986324/3379041http://zh.sourceforge.jp/projects/poi-jdk14/downloads/51695/poi-3.7-jdk1.4-20110417-rc1.jar/
解决方案四:
推荐使用http://poi.apache.org/简单,容易,demo全,祝你好运!
解决方案五:
用POI啊,很好用的,我一直用他
解决方案六:
你是用什么读的?有很多第三方库的啊 jxl poi,poi比较犀利
解决方案七:
office 2007的结构跟2003是不一样的,office2007可以用winrar打开,里面就是许多xml文档组成的,你可以打开看看

时间: 2024-09-11 01:42:23

Java读取Excel2007的相关文章

java 读取dbf文件-java读取dbf文件问题怎样解决使用javadbf.jar

问题描述 java读取dbf文件问题怎样解决使用javadbf.jar 使用javadbf.jar读取dbf文件只能读取到字段名和第一行记录,然后遇到com.linuxense.javadbf.DBFException: Failed to parse Number: multiple points错误怎么解决

java读取操作系统环境变量

变量 java读取操作系统环境变量 /**文件名:SysProb.java描述: 取得当前系统变量的程序. java中的System.getProperty只是针对JVM来的,如果要取得系统环境变量,还要用到系统相关的函数作者: 慈勤强Email :cqq1978@Gmail.com**/ import java.util.*;import java.io.*; class SysProb{ //返回当前系统变量的函数,结果放在一个Properties里边,这里只针对win2k以上的,其它系统可

Java读取文件内容的小例子

Java 提供 BufferedReader 类用来从流中读取字符串.FileReader 类用来读取文件.我们用这两个类来读取文件中的字符串. 下面是一个例子: import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ReadFile{ public static void main(String[] args){ String path="c:/1.txt&

java读取properties文件的方法

  本文实例讲述了java读取properties文件的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 package com.t

java读取大文件简单实例

 这篇文章主要介绍了java读取大文件简单实例,有需要的朋友可以参考一下 我要从一个文本文件中提有用的数据  文本文件200多MB  是不是可以建一个缓存来把有用的数据一段一段的提出来,请问该怎么做?    JAVA中可以使用内存映射文件来操作大文件.  最大可达2GB.  下面是个简单的示例,更具体的自己看Java API DOCS或相关资料      代码如下: import java.io.*;  import java.nio.*;  import java.nio.channels.*

java读取properties文件

关键字: java读取properties配置文件 今天要将以前一个项目的数据连接改成从properties文件中配置.找了好久,网上也不少,可就是读取文件时总是找不到文件在哪(我放在classes目录下了).最后终于成功,记下,以做纪念. Java代码 package com.web.connection; import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.s

java读取服务器html文件带图片显示到前端

问题描述 java读取服务器html文件带图片显示到前端 html文件是通过word另存为生成的,存放位置不在web项目路径下,我现在通过文件流的方式读取html文件显示到浏览器,但图片无法显示出来,怎样解决呢? 解决方案 因为HTML文件也是文本文件,所以使用简单的字符流读取就可以了,而图片是二进制文件,需要字节流读取,可以使用ImageIO类(详细用法参照API文档)读取并写出图片,然后使用HTML的标签显示即可.当然这仅仅是解决思路之一.

lob乱码-java 读取CLob字段乱码

问题描述 java 读取CLob字段乱码 fps = new FileOutputStream(file); osw = new OutputStreamWriter(fps,"UTF-8"); bw = new BufferedWriter(osw); Clob content = qrs.getClob(3); String line=content.getSubString((long)1,(int)content.length()); log.info("shell:

java读取excel表格内容

问题描述 java读取excel表格内容 java读取excel表格内容,中间有好多空格,空格下面还有字,但是我就想读到空格上面,下面的不想读了,该怎么办呢 解决方案 使用POI组建读excel数据 解决方案二: POI 读取行列都可以的 . 解决方案三: 使用POI组建读excel数据,然后进行判断,空格就结束 解决方案四: 读到固定的某一行某一列就行了,,, 解决方案五: POI读取excel 时,是循环行读取的,在读取行数据时判断当前行数据是否为空,如果为空就跳出循环