日期:2014-05-20  浏览次数:20740 次

Java程序中使用Apache POI组件操作Excel文档出错,各位大虾熟悉的能否帮帮忙
我在用Apache的POI组件编写一个读取Excel文件数据和生成Excel文件的模块,出现了一个很奇怪的问题,就是当我从一个Excel源文件(workbook.xml)读取数据,并将其保存在一个List中,然后我再把这个List中的数据写入一个新的Excel源文件(wrorkbook2.xml,且格式数据和workbook.xml一样),这两个功能都成功了;奇怪的是,当我编写测试程序来测试者两个功能模块时,发现我用程序读取wrorkbook2.xml文件时,最后一列的数据始终读取不了(即,读取workbook.xml时,是完整的读取了7列,但读取wrorkbook2.xml时,只能读取6列);并且,我发现wrorkbook2.xml文件(5KB)的大小比wrorkbook.xml(17KB)小很多,有熟悉POI组件的人么,解答一下,谢谢!
 下面附模块代码;
package module;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * 用于对Excel文档进行读写操作
 * @author seven
 * 
 */

public class ExcelAccess 
{
 
 /**
  * 用于获取Excel文件中的数据 
  * @param filePath  Excel文件所在路径
  * @return 包含Excel文件中的数据的数组
  */
 public List<String> ReadExcelDate(String filePath)  
 {
 File excelFile = null;// Excel文件对象
 InputStream is = null;// 输入流对象
 List<String> result =  new ArrayList<String>();  // 暂存Excel文档中的数据
 
 try
 {  
 excelFile = new File(filePath);
 is = new FileInputStream(excelFile);// 获取文件输入流
 HSSFWorkbook workbook2003 = new HSSFWorkbook(is);// 创建Excel2003文件对象
 HSSFSheet sheet = workbook2003.getSheetAt(0);// 取出第一个工作表,索引是0
   
     // 开始循环遍历行,表头不处理,从1开始
for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++)
{

HSSFRow row = sheet.getRow(rowIndex);// 获取行对象
System.out.println(row.getLastCellNum());
for (int colIndex = 0; colIndex < row.getLastCellNum(); colIndex++) 
{
HSSFCell cell = row.getCell((short)colIndex);// 获取单元格对象
if (cell == null)  // 判断单元格是否为空
{
result.add("");
continue;
}

result.add(String.valueOf(cell.getNumericCellValue()));