POIを使用してExcelファイルを読み込もうとしましたが、そのデータをJTable
に入れたいと考えました。あなたが見ることができるように私はその結果、以下しまっJTable
に上記のデータを読み込むと、2つの空のセルは、上記の表にあるPOIを使用してExcelファイルの空のセルを読み取る方法
Excelファイルがある、
私のJTable
では、空のセルが間違った場所に移動しました。この結果を得るために次のコードを使用しました。正しい結果を得るためには、
private XLSContainer xLSContainer;
Vector cellVectorHolder;
private int noOfCells=0;
public XLSContainer readXLS(XLSFile xLSFile) {
cellVectorHolder = new Vector();
try {
FileInputStream inputStream = new FileInputStream(xLSFile.getFileName());
POIFSFileSystem pOIFSFileSystem = new POIFSFileSystem(inputStream);
HSSFWorkbook hSSFWorkbook = new HSSFWorkbook(pOIFSFileSystem);
HSSFSheet hSSFSheet = hSSFWorkbook.getSheetAt(0);
Iterator rowIter = hSSFSheet.rowIterator();
while (rowIter.hasNext()) {
HSSFRow row = (HSSFRow) rowIter.next();
if(row.getRowNum()==0){
noOfCells = row.getLastCellNum();
}
Iterator cellIter = row.cellIterator();
Vector cellStoreVector = new Vector();
while (cellIter.hasNext()) {
HSSFCell hSSFCell = (HSSFCell) cellIter.next();
//System.out.println(hSSFCell.getCellNum());
cellStoreVector.addElement(hSSFCell);
}
cellVectorHolder.addElement(cellStoreVector);
}
} catch (Exception e) {
e.printStackTrace();
}
feedXLSContainer();
return xLSContainer;
}//readXLS
private void feedXLSContainer() {
xLSContainer = new XLSContainer();
for (int i = 0; i < cellVectorHolder.size(); i++) {
Vector cellStoreVector = (Vector) cellVectorHolder.elementAt(i);
Vector item = new Vector();
for (int j = 0; j < cellStoreVector.size(); j++) {
HSSFCell cell = (HSSFCell) cellStoreVector.elementAt(j);
item.add(cell.toString());
}
if (i == 0) {
xLSContainer.addHeader(item);
} else {
xLSContainer.addRow(item);
}
}
}
私が上記の行っていることはxLSContainer
というクラスに別々のベクターに見出しとデータ行を配置し、JTable
にそれらのベクトルを入れています。ここで
が
private XLSContainer xLSContainer;
public XLSContainer readXLS(XLSFile xLSFile) {
try {
WorkbookSettings ws = new WorkbookSettings();
ws.setLocale(new Locale("en", "EN"));
Workbook workbook = Workbook.getWorkbook(new File(xLSFile.getFileName()), ws);
Sheet s = workbook.getSheet(0);
System.out.println("Sheet Content::" + s.getName());
readDataSheet(s);
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
return xLSContainer;
}
private void readDataSheet(Sheet s) {
xLSContainer = new XLSContainer();
int noOfRows = s.getRows();
int noOfCols = s.getColumns();
for (int i = 0; i < noOfRows; i++) {
Vector item = new Vector();
for (int j = 0; j < noOfCols; j++) {
if (s.getCell(j, i).getContents() == "") {
item.add("");
} else {
item.add(s.getCell(j, i).getContents());
}
}
if (i == 0) {
xLSContainer.addHeader(item);
}else{
xLSContainer.addRow(item);
}
}
}
最後に私はPOI APIをあきらめ、jxl.jarを使用したいという結果を得ました。今はうまくいく。 – Harsha