-2

在我的代码中,我面临 ap​​che 库丢失错误..

我将我的整个代码粘贴在下面..请帮助我找到解决方案...

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.*;



// Apache POI - HSSF imports
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;




public class ExcelParser {

    HSSFSheet m_sheet;
    int m_iNbRows;
    int m_iCurrentRow = 0;
    private static final String JAVA_TOSTRING =
 "EEE MMM dd HH:mm:ss zzz yyyy";

    public ExcelParser(HSSFSheet sheet)
    {
        m_sheet = sheet;
        m_iNbRows = sheet.getPhysicalNumberOfRows();
    }


    /* Returns the contents of an Excel row in the 
form of a String array.
     * @see com.ibm.ccd.common.parsing.Parser#splitLine()
     */
    public String[] splitLine() throws Exception {
        if (m_iCurrentRow == m_iNbRows)
            return null;

        HSSFRow row = m_sheet.getRow(m_iCurrentRow);
        if(row == null)
        {
            return null;
        }
        else
        {
            int cellIndex = 0; 
            int noOfCells = row.getPhysicalNumberOfCells();
            String[] values = new String[noOfCells];        
            short firstCellNum = row.getFirstCellNum();
            short lastCellNum = row.getLastCellNum();

            if (firstCellNum >=0 && lastCellNum >=0) 
            {
                for(short iCurrent = firstCellNum; iCurrent <lastCellNum; iCurrent++) 
            {
                    HSSFCell cell = (HSSFCell)row.getCell(iCurrent);
                    if(cell == null)
                    {
                        values[iCurrent] = "";
                        cellIndex++;                
                        continue;
                    }
                    else
                    {
                        switch(cell.getCellType())
                        {                           
                        case HSSFCell.CELL_TYPE_NUMERIC:
                        double value = cell.getNumericCellValue();
                        if(HSSFDateUtil.isCellDateFormatted(cell)) 

                        {
                            if(HSSFDateUtil.isValidExcelDate(value))
                            {
                                Date date = HSSFDateUtil.getJavaDate(value);
                                SimpleDateFormat dateFormat = new SimpleDateFormat(JAVA_TOSTRING);  
                                values[iCurrent] = dateFormat.format(date);                             
                            }
                            else
                            {
                                throw new Exception("Invalid Date value found at row number " +
                                        row.getRowNum()+" and column number "+cell.getCellNum());   
                            }
                        }
                        else
                        {
                            values[iCurrent] = value + "";
                        }
                        break;

                        case HSSFCell.CELL_TYPE_STRING:
                            values[iCurrent] = cell.getStringCellValue();
                        break;

                        case HSSFCell.CELL_TYPE_BLANK:
                            values[iCurrent] = null;    
                        break;

                        default:
                            values[iCurrent] = null;    
                        }           
                    }                           
                }        
            }
            m_iCurrentRow++;
            return values;              
        }

    }

   public static void main(String args[])
   {
       HSSFWorkbook workBook = null; 
       File file  = new File("/home/sprasad/austin_api/Book1.xls");
       InputStream excelDocumentStream = null;
       try 
       {
           excelDocumentStream = new FileInputStream(file);
           POIFSFileSystem fsPOI = new POIFSFileSystem(new BufferedInputStream(excelDocumentStream));
           workBook = new HSSFWorkbook(fsPOI);         
           ExcelParser parser = new ExcelParser(workBook.getSheetAt(0));
           String [] res;
            while ((res = parser.splitLine()) != null)
            {
                            for (int i = 0; i < res.length; i++)
                {
                    System.out.println("Token Found [" + res[i] + "]");
                }
            }
            excelDocumentStream.close();

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }


   }

上面的示例在我使用此代码时遇到错误..

请向我推荐任何相同的图书馆或教程..提前谢谢...

4

2 回答 2

2

只需下载Apache POI,将其添加到您的类路径中并检查它是否正常工作。

如果您使用的是 Eclipse,只需右键单击项目 > 属性 > Java 构建路径 > 库,然后单击添加外部 JAR。

应添加以下 JAR:

  • poi-3.8-20120326.jar
  • poi-examples-3.8-20120326.jar
  • poi-excelant-3.8-20120326.jar
  • poi-ooxml-3.8-20120326.jar
  • poi-ooxml-schemas-3.8-20120326.jar
  • poi-scratchpad-3.8-20120326.jar

在此之后,您应该能够使用项目类。

于 2012-06-11T17:16:53.830 回答
1

如果您有import错误,那么您可能忘记在您的Java 类路径中包含您正在使用的 3rd 方库。假设您的 Apache 库有一堆 JAR 文件,您需要将它们包含在应用程序的类路径中,如我提供的 Wikipedia 链接中所述。

或者,您可能正在尝试导入当前库集中不存在的过时或无效的类。

除非您发布错误消息并提及您正在使用哪些库文件以及您如何启动应用程序,否则我们无法提供更具体的帮助。

于 2012-06-11T17:12:05.403 回答