Salve! Sto scrivendo un programma in java che dovrebbe prendere un file Excel come input e scriverci sopra quindi mantenendo i dati già presenti e aggiungendo i nuovi.
Il problema non è nel codice nel senso che se uso un file Excel con pochi elementi, funziona. Però dovrei applicarlo ad un file più grande e con varie formule all'interno.
Il codice è questo

codice:
import java.io.File;
import java.io.IOException;


import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Number;
import jxl.write.WritableCell;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.JxlWriteException;
import jxl.FormulaCell;




import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;


import jxl.common.Assert;
import jxl.common.Logger;


import jxl.Cell;
import jxl.CellFeatures;
import jxl.CellReferenceHelper;
import jxl.CellType;
import jxl.DateCell;
import jxl.HeaderFooter;
import jxl.Range;
import jxl.SheetSettings;
import jxl.WorkbookSettings;
import jxl.biff.AutoFilter;
import jxl.biff.AutoFilterInfoRecord;
import jxl.biff.AutoFilterRecord;
import jxl.biff.ConditionalFormat;
import jxl.biff.ConditionalFormatRangeRecord;
import jxl.biff.ConditionalFormatRecord;
import jxl.biff.ContinueRecord;
import jxl.biff.DataValidation;
import jxl.biff.DataValidityListRecord;
import jxl.biff.DataValiditySettingsRecord;
import jxl.biff.FilterModeRecord;
import jxl.biff.FormattingRecords;
import jxl.biff.Type;
import jxl.biff.WorkspaceInformationRecord;
import jxl.biff.drawing.Button;
import jxl.biff.drawing.Chart;
import jxl.biff.drawing.CheckBox;
import jxl.biff.drawing.ComboBox;
import jxl.biff.drawing.Comment;
import jxl.biff.drawing.Drawing;
import jxl.biff.drawing.Drawing2;
import jxl.biff.drawing.DrawingData;
import jxl.biff.drawing.DrawingDataException;
import jxl.biff.drawing.MsoDrawingRecord;
import jxl.biff.drawing.NoteRecord;
import jxl.biff.drawing.ObjRecord;
import jxl.biff.drawing.TextObjectRecord;
import jxl.biff.formula.FormulaException;
import jxl.format.PageOrder;
import jxl.format.PageOrientation;
import jxl.format.PaperSize;




public class Principale {
    public static void main (String [] args) throws BiffException, IOException, JxlWriteException, WriteException{
        try{
    Workbook workbook = Workbook.getWorkbook(new File("Dati_S.Orsola.xls"));
    WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"), workbook);
    
    WritableSheet soluzione = copy.getSheet(0); 
    WritableCell cell = soluzione.getWritableCell(1,1);
    
    Number n = new Number(1,1, 100);
    cell = (WritableCell) n;
    soluzione.addCell(cell);
    
    copy.write(); 
    copy.close();
    workbook.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
       } catch (WriteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
       }
    
    }
}


E il risultato se uso il file Excel grande (cioè quello di cui ho bisogno) è questo:
Warning: Shared template formula is null - trying most recent formula template
Warning: Shared template formula is null - trying most recent formula template
Warning: Shared template formula is null - trying most recent formula template
Warning: Shared template formula is null - trying most recent formula template
Warning: Shared template formula is null - trying most recent formula template
Warning: Shared template formula is null - trying most recent formula template
Warning: Cell A67 already contains data
Warning: Cell A67 already contains data
Warning: Cell A67 already contains data
Warning: Cell A67 already contains data
Warning: Cell A67 already contains data
Warning: Cell A67 already contains data
Exception in thread "main" java.util.EmptyStackException
at java.util.Stack.peek(Unknown Source)
at java.util.Stack.pop(Unknown Source)
at jxl.biff.formula.BuiltInFunction.getOperands(Built InFunction.java:98)
at jxl.biff.formula.TokenFormulaParser.addOperator(To kenFormulaParser.java:459)
at jxl.biff.formula.TokenFormulaParser.parseSubExpres sion(TokenFormulaParser.java:378)
at jxl.biff.formula.TokenFormulaParser.parse(TokenFor mulaParser.java:118)
at jxl.biff.formula.FormulaParser.parse(FormulaParser .java:161)
at jxl.read.biff.SharedNumberFormulaRecord.getFormula Data(SharedNumberFormulaRecord.java:160)
at jxl.write.biff.ReadFormulaRecord.getData(ReadFormu laRecord.java:141)
at jxl.biff.WritableRecordData.getBytes(WritableRecor dData.java:71)
at jxl.write.biff.File.write(File.java:147)
at jxl.write.biff.RowRecord.writeCells(RowRecord.java :342)
at jxl.write.biff.SheetWriter.write(SheetWriter.java: 480)
at jxl.write.biff.WritableSheetImpl.write(WritableShe etImpl.java:1558)
at jxl.write.biff.WritableWorkbookImpl.write(Writable WorkbookImpl.java:950)
at a.Principale.main(Principale.java:79)



Mi sembra che il problema stia nella lettura di alcune formule nel file. Qualcuno sa dirmi se devo importare dell'altro? O se c'è una soluzione che non sia creare un file nuovo per l'outpur (come sto facendo ora)? Grazie