如何从excel文件中读取数据,每次运行时都保存到新类

时间:2016-03-05 08:58:35

标签: java excel apache-poi

您好我已经读取了excel文件中的数据,然后我将这些数据存储到数组列表中。我希望每次使用不同的文件运行程序时,arraylist都会存储在eclipse上的另一个类中。所以我将在我的包中有另一个类来保存所有这些数组。很抱歉,如果我解释得不够好,但我想运行这个程序,并且每次存储在包中的另一个文件时都会获得一个新的arraylist。

package Experiment1;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcel {

public static void main(String args[]) throws IOException{
    FileInputStream fis = new FileInputStream(new File("C:/myfile"));

    //create workbook instance that refers to .xlsx file
    XSSFWorkbook wb = new XSSFWorkbook(fis);


    //create a sheet object to retrieve the sheet
    XSSFSheet sheet = wb.getSheetAt(0);

    //this is for evaluate the cell type
    FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator();


    //int rowStart = Math.min(1, sheet.getFirstRowNum());
    //int rowEnd = Math.max(64, sheet.getLastRowNum());



    ArrayList<Double> list = new ArrayList<Double>();

    for(Row row : sheet){

        for(Cell cell : row){


            switch(formulaEvaluator.evaluateInCell(cell).getCellType())
            {
            case Cell.CELL_TYPE_NUMERIC:
                list.add(cell.getNumericCellValue());

                break;

            case Cell.CELL_TYPE_STRING:

                break;
            }
        }

        /*for(int i = 0; i<list.size();i++){
        System.out.println(list.get(i));
        }
        */

    }

}

}

1 个答案:

答案 0 :(得分:1)

好的,我想我明白你的意思了。 工作是将ArrayList<Double> list

存储在同一个包中的文件中

了解Serialization in Java (IBM)its secrets (Oracle...)

使用implements Serializable声明您的类,为对象序列化添加生成的唯一标识符,添加一些基本内容,例如toString()hashCode()等方法......

现在,您可以使用list.serialize()方法或文档中的InputStreamOutputStream来执行您需要的操作。

我刚刚找到了你会喜欢的东西here

<强>序列化

package beginnersbook.com;
import java.util.ArrayList;
import java.io.*;

public class ArrayListSerialization {
    public static void main(String [] args) {
        ArrayList<String> al=new ArrayList<String>();
       al.add("Hello");
       al.add("Hi");
       al.add("Howdy");

       try {
           FileOutputStream fos= new FileOutputStream("myfile");
           ObjectOutputStream oos= new ObjectOutputStream(fos);
           oos.writeObject(al);
           oos.close();
           fos.close();
       } catch(IOException ioe) {
           ioe.printStackTrace();
       }
    }
}

反序列化:

package beginnersbook.com;
import java.io.*;
import java.util.ArrayList;
public class DeSerializationClass  {
    public static void main(String [] args)
    {
        ArrayList<String> arraylist= new ArrayList<String>();
        try {
            FileInputStream fis = new FileInputStream("myfile");
            ObjectInputStream ois = new ObjectInputStream(fis);
            arraylist = (ArrayList) ois.readObject();
            ois.close();
            fis.close();
         } catch(IOException ioe) {
             ioe.printStackTrace();
             return; 
         } catch(ClassNotFoundException c) {
             System.out.println("Class not found");
             c.printStackTrace();
             return;
          }
        for(String tmp: arraylist) {
            System.out.println(tmp);
        }
   }
}