前些天问了个JAVA读取EXCEL文件的问题,有网友发的一段代码,很是感激。自己看代码时,里面提到了POI第三方包,也下载下来,确实长知识了。但发现里面还引用了一个其它的包,不是很清楚,希望哪位告知下。下面是代码,其中最后一个import 语句被注释了,就是这段不知道是哪个包里的,知道的看能不能发个全名,我到网上去下它的源码。在网上也搜了下相关内容,也有人问过,但回答不是很清楚,看哪位帮下忙,谢谢!
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import com.fsti.eoms.util.DateUtil;
public class ExcelReader {
public static void main(String[] arg) {
ExcelReader er = new ExcelReader();
try {
HashMap map = er.readExcel("E:/Sheet.xls");
System.out.println(map.isEmpty());
for(int i = 0; i < map.keySet().size(); i++) {
LinkedList list = (LinkedList)map.get(new Integer(i+1));
Iterator it = list.iterator();
while(it.hasNext()) {
System.out.print(it.next()+"\t");
}
System.out.print("\n");
System.out.print("a");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print("a");
}
/**
* 读EXCEL文件
* @param path
* @return
*/
public HashMap readExcel(String path) {
HashMap map= null;
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(path));
//表单
for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
if (null != workbook.getSheetAt(numSheets)) {
HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet
//行
map = new HashMap();
for (int rowNumOfSheet = 1; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
if (null != aSheet.getRow(rowNumOfSheet)) {
HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
LinkedList al = new LinkedList();
//列
for (short cellNumOfRow = 1; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {
String strCell = "";
Object a = aRow.getCell(cellNumOfRow);
if (null != aRow.getCell(cellNumOfRow) ) {
HSSFCell aCell = aRow.getCell(cellNumOfRow);
if(aCell.getCellType() == (aCell.CELL_TYPE_NUMERIC)) {
strCell =String.valueOf(aCell.getNumericCellValue());
int index = strCell.indexOf(".");
if(index != -1) {
strCell = strCell.substring(0,index);
}
/*if(HSSFDateUtil.isCellDateFormatted(aCell)) {
strCell = DateUtil.convertDateToString("yyyy-MM-dd HH:mm:ss",aCell.getDateCellValue());
}*/
} else {
strCell = aCell.getStringCellValue();
}
al.add(cellNumOfRow-1, strCell);
}
}
map.put(new Integer(rowNumOfSheet), al);//添加一行数据
}
}
}
}
} catch (Exception e) {
System.out.println("-------------ReadExcelError------------------" + e.getMessage());
e.printStackTrace();
}
return map;
}
}
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import com.fsti.eoms.util.DateUtil;
public class ExcelReader {
public static void main(String[] arg) {
ExcelReader er = new ExcelReader();
try {
HashMap map = er.readExcel("E:/Sheet.xls");
System.out.println(map.isEmpty());
for(int i = 0; i < map.keySet().size(); i++) {
LinkedList list = (LinkedList)map.get(new Integer(i+1));
Iterator it = list.iterator();
while(it.hasNext()) {
System.out.print(it.next()+"\t");
}
System.out.print("\n");
System.out.print("a");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print("a");
}
/**
* 读EXCEL文件
* @param path
* @return
*/
public HashMap readExcel(String path) {
HashMap map= null;
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(path));
//表单
for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
if (null != workbook.getSheetAt(numSheets)) {
HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet
//行
map = new HashMap();
for (int rowNumOfSheet = 1; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
if (null != aSheet.getRow(rowNumOfSheet)) {
HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
LinkedList al = new LinkedList();
//列
for (short cellNumOfRow = 1; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {
String strCell = "";
Object a = aRow.getCell(cellNumOfRow);
if (null != aRow.getCell(cellNumOfRow) ) {
HSSFCell aCell = aRow.getCell(cellNumOfRow);
if(aCell.getCellType() == (aCell.CELL_TYPE_NUMERIC)) {
strCell =String.valueOf(aCell.getNumericCellValue());
int index = strCell.indexOf(".");
if(index != -1) {
strCell = strCell.substring(0,index);
}
/*if(HSSFDateUtil.isCellDateFormatted(aCell)) {
strCell = DateUtil.convertDateToString("yyyy-MM-dd HH:mm:ss",aCell.getDateCellValue());
}*/
} else {
strCell = aCell.getStringCellValue();
}
al.add(cellNumOfRow-1, strCell);
}
}
map.put(new Integer(rowNumOfSheet), al);//添加一行数据
}
}
}
}
} catch (Exception e) {
System.out.println("-------------ReadExcelError------------------" + e.getMessage());
e.printStackTrace();
}
return map;
}
}
解决方案 »
- JAVA基础编程
- JAVA中 关于 Collection Iterator接口的用法~~~~~~~~
- Eclipse3.6运行Servlet问题
- 如何定期重复执行100个任务???
- 用Integer.parseInt(JOptionPane.showInputDialog就把DOS卡住了
- 问一个简单的问题,java的包放在哪里??
- udp通讯(聊天),结果无法显示...小问题,大家看看
- 编译不报错 程序运行也没问题 但多了两个NOTE
- java swing的打印能够判断出当前打印机的状态?
- HTTP Status 500 - Servlet.init() for servlet appServlet threw exception
- Java继承的问题
- 关于线程同步的代码简单小例子,过了一年,还是问题。
http://poi.apache.org/
可以参考下这篇文章
http://www.blogjava.net/renyangok/articles/63889.html
2楼: 那个(DateUtil)不是POI中的类,我查过它的API.你给的那外网页我也看了.
aCell.getDateCellValue()返回的是java.util.Date的一个对象,那类应该是处理Date的啰。
这个问题还是不讨论了。我将那段注释后,编译通过了,但运行时出现这样的错误:
先抛出异常了,打印了那段话。然后就说“Unable to read entire header......” ,不知道什么意思。