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()));