前些天问了个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;   
    }   
}

解决方案 »

  1.   

    那是POI里面的吧
    http://poi.apache.org/
    可以参考下这篇文章
    http://www.blogjava.net/renyangok/articles/63889.html
      

  2.   

    我上面的回答 是针对一楼的
    2楼: 那个(DateUtil)不是POI中的类,我查过它的API.你给的那外网页我也看了.
      

  3.   

    我看那个类估计是自己设计的吧.
    aCell.getDateCellValue()返回的是java.util.Date的一个对象,那类应该是处理Date的啰。
    这个问题还是不讨论了。我将那段注释后,编译通过了,但运行时出现这样的错误:
    先抛出异常了,打印了那段话。然后就说“Unable to read entire header......” ,不知道什么意思。