3

データベースとして扱わず、他の外部APIを使用せずにJavaでExcelシートを読み取る方法。

4

5 に答える 5

4

JavaでExcelシートを直接処理する方法はありません。Apache POIJavaAPIを使用する必要があります。

Apache POIは、さまざまなMicrosoftファイル形式、特にXLSやDOCXなどのOLE2およびOOXMLに基づくOffice関連のファイル形式を読み書きするためのJavaライブラリです。

Excelシートを読む一例を見てみましょう。xlsxlsxファイル形式の両方をサポートします。

import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

private Vector importExcelSheet(String fileName)
{
    Vector cellVectorHolder = new Vector();
    try
    {
        Workbook workBook = WorkbookFactory.create(new FileInputStream(fileName));
        Sheet sheet = workBook.getSheetAt(0);
        Iterator rowIter = sheet.rowIterator();

        while(rowIter.hasNext())
        {
            XSSFRow row = (XSSFRow) rowIter.next();
            Iterator cellIter = row.cellIterator();
            Vector cellStoreVector=new Vector();

            while(cellIter.hasNext())
            {
                XSSFCell cell = (XSSFCell) cellIter.next();
                cellStoreVector.addElement(cell);
            }
            cellVectorHolder.addElement(cellStoreVector);
        }
    }
    catch (Exception e)
    {
        System.out.println(e.getMessage());
    }
    return cellVectorHolder;
}

上記のメソッドを呼び出すと、次のように返さVectorれます。

Vector dataHolder=importExcelSheet("Excel_file.xlsx");

注:Vectorここで使用されているのはデモンストレーション用です。Javaでは廃止されているため、使用しないでください。Javaコレクションフレームワークで利用可能な他のタイプのコレクションを使用します。

于 2012-04-21T09:54:04.380 に答える
1

できません。

JavaSEおよびEEAPIは、Excelスプレッドシートの読み取りをサポートしていません。

(まあ、Excelの仕様を読んで、独自のスプレッドシートリーダーを最初から開発するのに数か月かかると思います。しかし、それは労力の無駄だと思います。拒否した代替案の1つを使用してください。)


Re:スプレッドシートをCSVに変換し、それを読み取るアプローチ:

  • これはスプレッドシートを読んでいません。
  • スプレッドシートからCSVに変換するには、外部アプリケーション(Excelなど)が必要です。
  • 損失があります。スプレッドシートの単純なデータコンテンツのみを読み取ることができます。他のすべてが失われます。
于 2012-04-21T09:17:40.323 に答える
1

xlsファイルをcsvファイルに変換できます。JavaAPIはcsvファイルをサポートします。Standrt I/Oライブラリを使用してcsvファイルを読み取ることができます。

于 2012-04-21T09:20:19.910 に答える
1

xlsおよびxlsxファイルを読み取るにはApachePOI使用する必要があります

記憶の制約に応じて、HSSF、XSSF、SXSSFを使用できます。

于 2012-04-21T09:41:39.783 に答える
0

これを試して

    import java.io.File;
    import java.io.IOException;

    import jxl.Cell;
    import jxl.CellType;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;

    public class ReadExcel {

   private String inputFile;

   public void setInputFile(String inputFile) {
    this.inputFile = inputFile;
        }

   public void read() throws IOException  {
    File inputWorkbook = new File(inputFile);
  Workbook w;
try {
w = Workbook.getWorkbook(inputWorkbook);
// Get the first sheet
Sheet sheet = w.getSheet(0);
// Loop over first 10 column and lines
for (int j = 0; j < sheet.getColumns(); j++) {
for (int i = 0; i < sheet.getRows(); i++) {
Cell cell = sheet.getCell(j, i);
CellType type = cell.getType();
if (cell.getType() == CellType.LABEL) {
System.out.println("I got a label "
                    + cell.getContents());
 }
  if (cell.getType() == CellType.NUMBER) {
System.out.println("I got a number "
                    + cell.getContents());
 }
 }
}
} catch (BiffException e) {
 e.printStackTrace();
}
}

public static void main(String[] args) throws IOException {
ReadExcel test = new ReadExcel();
test.setInputFile("c:/temp/lars.xls");
test.read();
        }

    }
于 2012-04-21T09:29:58.153 に答える