Как написать отформатированные числа как числа в JExcel (jxl) - PullRequest
7 голосов
/ 22 декабря 2010

Я использую Java Spring и jxl для создания книги Excel на стороне сервера.Данные, которые должны быть показаны в Excel, состоят из уже отформатированных чисел.Я использую

WritableCellFormat wcf = new WritableCellFormat();
wcf.setAlignment(Alignment.RIGHT);
....
....
sheet.addCell(new Label(j, i + 1, xxx, wcf));
//where xxx is a string which is a number already formatted

В загруженном файле Excel все эти числа хранятся в виде текста, и поэтому Excel не может использовать формулы для них, он выдает предупреждение как «Число, хранящееся как текст», и я имеюсделать «Преобразовать в число».

В jxl мы можем передать строки и сказать, что они должны интерпретироваться как числа?Все числа, которые я имею, являются действительными числами, отформатированными по-разному, используя $,%, разделители тысяч.Я не хочу преобразовывать их в действительные числа и заново форматировать их при экспорте в Excel.

Пожалуйста, помогите.Спасибо.

Ответы [ 2 ]

3 голосов
/ 08 июля 2014

У меня была похожая проблема

Я изменил переменную на int и использовал функцию new Number , которая помогла.

0 голосов
/ 23 декабря 2010
/*use new Number to write number cell*/
WritableWorkbook w;
    try {
        w = Workbook.createWorkbook(new File("c:/test.xls"));
        WritableSheet s = w.createSheet("Demo Book", 0);
        WritableCellFormat wcf = new WritableCellFormat();
        for (int i=0;i<10;i++){
            int row = i+1;
            /*add cell number*/
            s.addCell(new Number(1, i, (i*15)));
            /*add cell number*/
            s.addCell(new Number(2, i, (i*3+Math.random()*10)));
            /*add formula*/
            s.addCell(new Formula(3,i,"B"+row+" * C"+row));
        }
        w.write();
        w.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (RowsExceededException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (WriteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
...