3 Stimmen

Excel-Dateilesen in Java (Einfaches JSP und Servlet)

Wie man ein Excel-Blatt in Java liest, ohne es als Datenbank zu behandeln, und ohne andere externe APIs zu verwenden.

4voto

Lion Punkte 18365

Es gibt keinen direkten Weg, um mit Excel-Tabellen in Java umzugehen. Sie sollten die Apache POI Java API verwenden.

Apache POI ist eine Java-Bibliothek zum Lesen und Schreiben verschiedener Microsoft-Dateiformate, insbesondere von Office-bezogenen, die auf OLE2 und OOXML basieren, wie z.B. XLS und DOCX.

Lassen Sie uns ein Beispiel zum Lesen einer Excel-Tabelle sehen. Es unterstützt sowohl das xls- als auch das xlsx-Dateiformat.

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;
}

Rufen Sie die obige Methode auf, die einen Vector zurückgibt, wie folgt.

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

Hinweis: Der hier verwendete Vector dient nur zur Demonstration. Man sollte ihn nicht verwenden, da er in Java veraltet ist. Verwenden Sie andere Arten von Sammlungen, die im Java Collection Framework verfügbar sind.

1voto

Stephen C Punkte 665668

Sie können nicht.

Die Java SE- und EE-APIs unterstützen nicht das Lesen von Excel-Tabellenkalkulationen.

(Nun ja, Sie könnten natürlich einige Monate damit verbringen, die Excel-Spezifikationen durchzulesen und Ihren eigenen Tabellenkalkulationsleser von Grund auf zu entwickeln. Aber das erscheint mir als eine Verschwendung von Mühe. Verwenden Sie einfach eine der Alternativen, die Sie abgelehnt haben.)


Bezüglich des Ansatzes, die Tabelle in ein CSV umzuwandeln und dieses zu lesen:

  • Dies ist KEIN Lesen der Tabelle.
  • Es erfordert eine externe Anwendung (z.B. Excel), um die Umwandlung von der Tabelle in CSV durchzuführen.
  • Es ist verlustbehaftet. Sie können nur den einfachen Dateninhalt der Tabelle lesen. Alles andere geht verloren.

1voto

Ilya Punkte 28356

Sie können die Datei xls in eine Datei csv konvertieren. Die Java API unterstützt csv-Dateien. Sie können die csv-Datei mit den Standard-I/O-Bibliotheken lesen.

1voto

abhi Punkte 1474

Sie müssen Apache POI verwenden, um xls- und xlsx-Dateien zu lesen

Sie können HSSF, XSSF, SXSSF je nach Ihrem Arbeitsspeicher verwenden....

0voto

Zaz Gmy Punkte 4206

Versuchen Sie das

    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);
// Holen Sie sich das erste Blatt
Sheet sheet = w.getSheet(0);
// Schleife über die ersten 10 Spalten und Zeilen
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("Ich habe ein Label "
                    + cell.getContents());
 }
  if (cell.getType() == CellType.NUMBER) {
System.out.println("Ich habe eine Nummer "
                    + 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();
        }

    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X