Помощь в читателе JXLS - PullRequest
       3

Помощь в читателе JXLS

1 голос
/ 21 февраля 2011

HI

Я новичок в jxls. Я читал статьи об этом, но, похоже, там не очень хорошие примеры. Я читаю файл XLS через Java. Пожалуйста, найдите простой прикрепленный файл xls для того же.

1)

public class Employee {   

    private String rollno;   
    private String name;   
    private String percentage;

2)

<worksheet name="Sheet1">
  <section endRow="1" startRow="0"/>
  <loop endRow="4" items="employee" startRow="3" var="emp" varType="com.Employee">
    <section endRow="4" startRow="3">
      <mapping col="0" row="3">emp.rollno</mapping>
      <mapping col="1" row="3">emp.name</mapping>
      <mapping col="2" row="3">emp.percentage</mapping>
    </section>
  </loop>
</worksheet>

3)

public class Client {   
    public static void main(String[] args) throws IOException, SAXException {   
          InputStream inputXML = new BufferedInputStream(new FileInputStream("C:\\NewFile1.xml"));     
          XLSReader mainReader = ReaderBuilder.buildFromXML( inputXML );     
          InputStream inputXLS = new BufferedInputStream(new FileInputStream("c:\\Book1.xls"));    

         Employee employee = new Employee();   

         System.out.println("Is Null inputXML:"+inputXML==null);   
         System.out.println("Is Null inputXLS:"+inputXLS==null);   

         Map beans = new HashMap();   
         beans.put("employee", employee);   
         XLSReadStatus readStatus = mainReader.read( inputXLS, beans);   
         readStatus.toString();   
    }   
}  

Я получаю исключение как

Feb 21, 2011 3:59:17 PM net.sf.jxls.reader.XLSReaderImpl readSheet
INFO: Processing sheet Sheet1
Exception in thread "main" java.lang.NullPointerException
    at net.sf.jxls.reader.XLSForEachBlockReaderImpl.read(XLSForEachBlockReaderImpl.java:45)
    at net.sf.jxls.reader.XLSSheetReaderImpl.read(XLSSheetReaderImpl.java:25)
    at net.sf.jxls.reader.XLSReaderImpl.readSheet(XLSReaderImpl.java:45)
    at net.sf.jxls.reader.XLSReaderImpl.read(XLSReaderImpl.java:31)
    at com.GetTheData.main(GetTheData.java:41)

Пожалуйста, помогите в решении этой проблемы.

Спасибо

Ответы [ 2 ]

1 голос
/ 07 декабря 2017

Client.java эта строка: beans.put ("employee", employee); изменить на: beans.put ("employee", new ArrayList ());

у меня работает.

1 голос
/ 21 февраля 2011

Вам нужно определить loopbreakcondition, чтобы остановить итерацию цикла на основе некоторого условия.

Например:

<worksheet name="Sheet1">
  <section endRow="1" startRow="0"/>
  <loop endRow="4" items="employee" startRow="3" var="emp" varType="com.Employee">
    <section endRow="4" startRow="3">
      <mapping col="0" row="3">emp.rollno</mapping>
      <mapping col="1" row="3">emp.name</mapping>
      <mapping col="2" row="3">emp.percentage</mapping>
    </section>
    <loopbreakcondition>
        <rowcheck offset="0">
            <cellcheck offset="0">END</cellcheck>
        </rowcheck>
    </loopbreakcondition>    
  </loop>
</worksheet>

Взгляните на руководство пользователя для получения дополнительной информации.

...