您好我已经读取了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));
}
*/
}
}
}
答案 0 :(得分:1)
好的,我想我明白你的意思了。
工作是将ArrayList<Double> list
。
了解Serialization in Java (IBM)和its secrets (Oracle...)。
使用implements Serializable
声明您的类,为对象序列化添加生成的唯一标识符,添加一些基本内容,例如toString()
,hashCode()
等方法......
现在,您可以使用list.serialize()
方法或文档中的InputStream
和OutputStream
来执行您需要的操作。
我刚刚找到了你会喜欢的东西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);
}
}
}