2017-02-28 8 views
0

Ich habe schon viel gesucht, konnte aber keine Lösung finden. Hoffe jemand kann mir hier helfen. Ich verwende Apache POI, um ein einfaches Tool zu erstellen. Formeln werden vom Benutzer eingegeben und das Ergebnis wird in eine Datei geschrieben. Ich bleibe bei der Erweiterung/Füllung der Formel.Schreiben Sie Excel-Formel mit Java Apache POI

Angenommen, Sie eine einfache Excel-Formel:

IF(A2=B2,True,False) 

A nach unten ziehen, auf Excel in ergäbe:

IF(A2=B2,True,False) 
IF(A3=B3,True,False) 
IF(A4=B4,True,False) 
IF(A5=B5,True,False) 
     . . 
      . 

Jetzt will ich in meinem Programm das gleiche tun. Ich werde wissen, welche Reihe zu Ende ist. Ich kann den Zeilenindex nicht erhöhen. Ich habe es schon manuell gemacht (Formel im Programm schreiben), aber jetzt muss ich das verwenden, wenn die Formel vom Benutzer übergeben wird.

Ich habe so etwas wie dies für den manuellen Teil:

for (int ind = 2; ind < rownumb ; ind++) 
{ 
sheet.getRow(i).createCell(12).setCellFormula("IF(K" + ind + "=L" + ind + ",FALSE,TRUE)"); 
} 

Nun wird der Benutzer Eingang:

=IF(K=L, False, True) OR =IF(K0=L0, False, True) 

Ich mag diese Formel Auto-Füllung hinzufügen (Erhöhen) die ganze Weg bis rownumb. Wie kann ich das machen?

Wenn es keinen direkten Weg gibt, kann jemand einen anderen Ansatz vorschlagen, die Anforderung ist jedoch, dass die Formel vom Benutzer übergeben wird.

Danke.

Antwort

0

Excel speichert seine Funktion nicht "in einer Zelle", sondern als VBA-Funktion. Um die Excel-Funktion selbst richtig nutzen zu können, müssen Sie dies emulieren. Überprüfen Sie this article about user defined functions, das könnte Sie in Fahrt bringen.