8

我正在使用 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 时再次给它们格式化。

请帮忙。谢谢你。

4

3 回答 3

5

我有一个类似的问题

我将变量更改为int并使用了它有帮助的新 Number函数。

int eday =  Integer.parseInt(Trainingresult.getString("Day"));
//Label Eday = new Label(1, i, eday);
firstsheet.addCell(new Number(1,i,eday));
于 2014-07-08T17:54:35.933 回答
0
/*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();
    }
于 2010-12-22T21:57:13.820 回答
0

首先,添加导入

import jxl.write.Number;

因为你可以得到其他 Number 类并得到错误,之后做任何事情

double dval = 1;
Number number = new Number(k, n, dval);

所以你也可以使用这个代码

        if(readCell.getType() == CellType.BOOLEAN) {
            boolean bv = false;
            if(readCell.getContents().equals("true")) {
                bv = true;
            }
            Boolean b = new Boolean(i,j,bv);
            writesheet.addCell(b);
        } else
        if(readCell.getType() == CellType.NUMBER) {
            //if (!readCell.getContents().equals("")) {
            double dval = 0;
            try {
                dval = Double.parseDouble(readCell.getContents());
            } catch (NumberFormatException ex) {
            }

            Number n = new Number(i, j, dval);
            writesheet.addCell(n);
于 2021-12-22T17:25:37.140 回答