Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren

Declade

Mitglied
Guten Morgen zusammen ,

ich habe folgendes Problem:
Ich soll aus einem von Java geöffneten Excel-Doc bestimmte Zellen kopieren und diese dann in ein neues Excel-Doc einfügen.

(pro Dokument(ca.40)/ 12 Zellen.

Das Öffnen der Dokumente klappt bereits. Allerdings bereitet mir das Kopieren noch Schwierigkeiten bei der Umsetzung.

Ich arbeite mit der jexcelapi.

Hier erstmal der Java-Code

Java:
package reader;

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

import reader.JavaOpenFile;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ReadExcel {
	
  public static String pfad;
  private String inputFile;
  public static int value;
  public static int valid;
  public static int lastreport;

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

  public  int read() throws IOException  {
   
	File inputWorkbook = new File(inputFile);
    Workbook w;
    int entries=0;
    try {
      w = Workbook.getWorkbook(inputWorkbook);
      Sheet sheet = w.getSheet(0);		// Get the first sheet
      
      //System.out.println("sheet 0 selected!");

      entries =  sheet.getRows();
      //System.out.println("number of rows" + entries);
      
      for (int i = 0; i < entries;i++) {
        	
           Cell cell = sheet.getCell(0, i);

           pfad = cell.getContents();
           //System.out.println("cell read" + i + pfad);

           JavaOpenFile.main(pfad);
           //JavaOpenFile file = new JavaOpenFile(pfad1);
           
           // HIER SOLL DAS KONZEPT ENTSTEHEN (hoffe ich)
        		  
           Workbook workbook = Workbook.getWorkbook(new File("new.xls"));  
           Sheet sheet1 = workbook.getSheet(100);  
           Cell policies[] = sheet1.getColumn(100);  
        	   
        	   else{
        		   return lastreport;
        	   }
        	   }
        	   
    } catch (BiffException e) {
      e.printStackTrace();
    }return entries;
	
	
  }

  public static void main(String[] args) throws IOException {
    ReadExcel test = new ReadExcel();
    test.setInputFile("c:/temp/test2.xls"); 
// an dem Pfad liegt das Dokument, in dem die Pfade für die zu öffnenden Excel-Docs liegen
    test.read();
  }
  
}

Auskommentieren System.out.Println sind nur für Testzwecke gedacht und eigentlich irrelevant.

Die Klasse verwendet eine Methode aus einer anderen Klasse zum Öffnen der Excel-Sheets, diese hab ich jedoch nicht beigefügt, da sie für mein Problem irrelevant sein sollte.

Folgendes Gedankenkonzept habe ich mir aufgestellt(zum Kopiervorgang).

for{ // dient einfach als Schleife um den Vorgang zu wiederholen

if( // bestimmter Wert einer Zelle muss 1 sein um die darunterliegenden Zellen zu kopieren

for{ // erneute Schleife, da die zu kopierenden Zellen pro Spalte immer 8 Zellen auseinander liegen

for{ // Schleife in der der eigentliche Kopiervorgang in das neue Dokument ausgeführt werden soll


Das Konzept , soll natürlich ineinander verschachtelt sein.

Ersteinmal die Frage ob die Idee zur Ausführung richtig ist.
Und dann natürlich noch wie ich diese am besten umsetzen kann.


Ich hoffe ich konnte mein Anliegen einigermaßen verständlich erklären, da ich das Thema recht komplex finde , entschuldigt sollte es an mancher Stelle etwas unklar sein. Ich werde versuchen, Unklarheiten zu beseitigen.


Danke im Vorraus,

Declade
 
Warum probierst du es nicht einfach? Ist jetzt nicht das riesige Projekt. Du scheinst zu Wissen, was Schleifen sind, also kannst du doch Zellen finden und diese in ein neues Sheet kopieren.
Dennoch eine Anmerkung:
for{ // erneute Schleife, da die zu kopierenden Zellen pro Spalte immer 8 Zellen auseinander liegen
Warum iterierst du nochmal durch die Zellen, es scheint als könntest du diese doch direkt ansprechen?
Code:
Cell cell = sheet.getCell(x, y+8);
. Ich weis nicht wie du deine gefunden Zellen zwischenspeicherst, aber ich könnte dir eine List<Cell> o.ä. empfehlen.
 
Sorry das ich so lange nichts geschrieben habe, war nicht im Office.
Ich denke ich hab mich hier verrannt, mein Problem ist gerade einfach, dass ich zu unfähig bin das neugeöffnete Dokument anzusprechen. Ich spreche mit meinen Abfragen immer noch das "alte"/inwelchem die Pfade stehen an.

Hoffe ihr könnt mir da kurz aus dem Sumpf helfen.

Gruß
Declade
 
Zuletzt bearbeitet:
w ist deine Eingabedatei, workbook deine Ausgabedatei. Woran hakt es denn genau?
Du musst natürlich wissen, in welche Zellen von workbook du die Informationen aus w abspeichern möchtest. Dafür verwendest du letzten Endes
Java:
workbook.getSheet(100).getColumn(100)
, was ehrlich gesagt ziemlich willkürlich wirkt.
Hast du dir die JExcel API mal gründlich angeschaut?
 

Zurück
Oben