在JAVA中每次调用函数时在excel中添加行
我使用此代码在Excel工作表的末尾添加行。每次调用函数时。其中初始化时在JAVA中每次调用函数时在excel中添加行,java,excel,file,apache-poi,Java,Excel,File,Apache Poi,我使用此代码在Excel工作表的末尾添加行。每次调用函数时。其中初始化时last=0 connectionTime, mobility, angleofArrival, sender and peer 是一些变量,其值随函数调用而更改。当调用函数时,我想在每一行保存一个值 public void excelWriter(DTNHost sender, DTNHost peer){ String fileName = "Results.xls";
last=0
connectionTime, mobility, angleofArrival, sender and peer
是一些变量,其值随函数调用而更改。当调用函数时,我想在每一行保存一个值
public void excelWriter(DTNHost sender, DTNHost peer){
String fileName = "Results.xls";
try {
File file = new File(fileName);
FileInputStream fin = null;
HSSFWorkbook workbook = null;
HSSFSheet worksheet = null;
FileOutputStream fout = null;
POIFSFileSystem lPOIfs = null;
if (file.exists()) {
try{
fout = new FileOutputStream(fileName, true);
fin = new FileInputStream(fileName);
lPOIfs = new POIFSFileSystem(fin);
workbook = new HSSFWorkbook(lPOIfs);
worksheet = workbook.getSheet("POI Worksheet");
for (int i=0; i<workbook.getNumberOfSheets(); i++) {
System.out.println( workbook.getSheetName(i) );
}
HSSFSheet sheet = workbook.getSheetAt(0);
last = sheet.getLastRowNum();
}catch (IOException e) {
e.printStackTrace();
}catch (NullPointerException e){
e.printStackTrace();
}
} else {
//create new file
try{
fout = new FileOutputStream(file);
}catch (IOException e) {
e.printStackTrace();
}
workbook = new HSSFWorkbook();
worksheet = workbook.createSheet("POI Worksheet");
}
if(last != 0){
last = worksheet.getLastRowNum();
}else{
last = worksheet.getLastRowNum()+1;
System.out.println(last);
}
HSSFRow row = worksheet.createRow(last++);
HSSFCell cellA1 = row.createCell((int)0);
cellA1.setCellValue(sender+" and "+peer);
HSSFCell cellB1 = row.createCell((int) 1);
cellB1.setCellValue(mobility);
HSSFCell cellC1 = row.createCell((int) 2);
cellC1.setCellValue(angleOfArival);
HSSFCell cellD1 = row.createCell((int) 3);
cellD1.setCellValue(connectionTime);
System.out.println("Data written");
workbook.write(fout);
fout.flush();
fout.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
////End
}
public void excelWriter(DTNHost发送方,DTNHost对等方){
字符串fileName=“Results.xls”;
试一试{
文件=新文件(文件名);
FileInputStream fin=null;
HSSF工作簿=空;
HSSF工作表=空;
FileOutputStream fout=null;
POIFSFS文件系统lPOIfs=null;
if(file.exists()){
试一试{
fout=新文件输出流(文件名,true);
fin=新文件输入流(文件名);
lPOIfs=新的POIFSFS文件系统(fin);
工作簿=新的HSSF工作手册(lPOIfs);
工作表=工作簿.getSheet(“POI工作表”);
对于(int i=0;i
上述方法有效,加载工作表后将打开OutputStream,删除了行HSSFSheet sheet=workbook.getSheetAt(0);
,因为它是多余的,所以您已经有了可以从中获取lastRowNum的工作表实例。语句HSSFRow row=worksheet.createRow(last++);
使用post increment运算符,因此它将继续写入同一行,“last”变量的值只有在执行此语句后才会递增
上述方法有效,加载工作表后将打开OutputStream,删除了行HSSFSheet sheet=workbook.getSheetAt(0);
,因为它是多余的,所以您已经有了可以从中获取lastRowNum的工作表实例。语句HSSFRow row=worksheet.createRow(last++);
使用后增量运算符,因此它将继续写入同一行,即“last”的值变量只有在执行此语句后才会递增。您能发布完整的代码吗?这是我用来在excel中写入数据的代码。未知值是变量。可能是伪值,我会更改它们。为了更清楚,整个代码超过500行,也不相关。fout=new FileOutputStream(文件名,true)
请查看该文件。由于每次代码运行时都会一本接一本地追加完整的工作簿,因此其大小应该会快速增加。不要在此处使用追加模式。工作簿。write
每次都会写入完整的工作簿。您告诉我什么不可以做。但我该怎么做。fout=new FileOutputStream(fileName)
您能发布完整的代码吗?这是我用来在excel中写入数据的代码。未知值是变量。可能是伪值,我会对它们进行更改。为了更清楚,整个代码超过500行,也不相关fout=new FileOutputStream(fileName,true)
请查看该文件。由于每次代码运行时都会一本接一本地追加完整的工作簿,因此其大小应该会快速增加。不要在此处使用追加模式。工作簿。write
每次都会写入完整的工作簿。您告诉我什么不可以做。但我该怎么做。fout=new FileOutputStream(fileName)
并且设置最后一行值的if-else条件也被删除。尝试此操作并检查它是否为您提供了预期的输出(某些值是硬编码的,因为您的完整代码不可用)。并且设置最后一行值的if-else条件也被删除。尝试此操作并检查它是否为您提供了预期的输出(某些值是硬编码的,因为您的完整代码不可用)。
public void excelWriter(DTNHost sender, DTNHost peer) {
String fileName = "Results.xls";
int last = 0;
try {
File file = new File(fileName);
FileInputStream fin = null;
HSSFWorkbook workbook = null;
HSSFSheet worksheet = null;
FileOutputStream fout = null;
POIFSFileSystem lPOIfs = null;
if (file.exists()) {
try {
fin = new FileInputStream(fileName);
lPOIfs = new POIFSFileSystem(fin);
workbook = new HSSFWorkbook(lPOIfs);
worksheet = workbook.getSheet("POI Worksheet");
last = worksheet.getLastRowNum() + 1;
fout = new FileOutputStream(fileName);
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
} else {
// create new file
try {
fout = new FileOutputStream(file);
} catch (IOException e) {
e.printStackTrace();
}
workbook = new HSSFWorkbook();
worksheet = workbook.createSheet("POI Worksheet");
}
HSSFRow row = worksheet.createRow(last);
HSSFCell cellA1 = row.createCell((int) 0);
cellA1.setCellValue(sender + " and " + peer);
HSSFCell cellB1 = row.createCell((int) 1);
cellB1.setCellValue("mobility");
HSSFCell cellC1 = row.createCell((int) 2);
cellC1.setCellValue("angleOfArival");
HSSFCell cellD1 = row.createCell((int) 3);
cellD1.setCellValue("connectionTime");
System.out.println("Data written");
workbook.write(fout);
fout.flush();
fout.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//// End
}