java使用jxl导出excel字符串类型转化成数值型

17 篇文章 1 订阅

https://blog.csdn.net/zzq900503/article/details/49123387

 

运用场景:

导出excel后 发现 数值类型的字段  在excel中表现为文本类型,这样不利于计算。

解决办法:


// 创建一个可写入的工作表
            // Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
            WritableSheet ws = wwb.createSheet(title, 1);
            jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#0.00"); // 设置数字格式
            jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(
                    nf); // 设置表单格式

            // 下面开始添加单元格
            for (int row = 0; row < titles.length; row++) {
                // System.out.println(row);
                for (int j = 0; j < titles[row].length; j++) {
                    if (titleNumFlags[j]) {//当数值型时先转换成double
                        try {
                            double titlesDoubleValue = Double
                                    .parseDouble(titles[row][j]);
                            ws = writeNumberToWs(ws, wcfN, row, j,
                                    titlesDoubleValue);

                        } catch (Exception notnum) {
                            String titlesStringValue = titles[row][j];
                            // 这里需要注意的是,在Excel中,j表示列,row表示行
                            ws = writeStringToWs(ws, row, j, titlesStringValue);
                        }
                    } else {
                        String titlesStringValue = titles[row][j];
                        // 这里需要注意的是,在Excel中,j表示列,row表示行
                        ws = writeStringToWs(ws, row, j, titlesStringValue);
                    }
                }
            }    
 
private static WritableSheet writeNumberToWs(WritableSheet ws,
            jxl.write.WritableCellFormat wcfN, int row, int j,
            double titlesDoubleValue) {
        jxl.write.Number labelNF = new jxl.write.Number(j, row,
                titlesDoubleValue, wcfN); // 格式化数值

        try {
            ws.addCell(labelNF);
        } catch (RowsExceededException e1) {
            e1.printStackTrace();
        } catch (WriteException e1) {
            e1.printStackTrace();
        }
        return ws;
    }
 
 
    private static WritableSheet writeStringToWs(WritableSheet ws, int row,
            int j, String titlesStringValue) {
        Label labelC = new Label(j, row, titlesStringValue);
        try {
            // 将生成的单元格添加到工作表中
            ws.addCell(labelC);
        } catch (RowsExceededException e) {
            e.printStackTrace();
        } catch (WriteException e) {
            e.printStackTrace();
        }
        return ws;
    }


当是数值类型的 先转换成double类型  保存为Number再写入 excel

 

poi或jxl都可以生成excel,给你说下baijxl怎么生成的吧,du详细的api你可以从网上下载。zhi
//添加带有formatting的Number对象
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##"); //设置数字格dao式
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf); //设置表单格式
jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN); //格式化数值
ws.addCell(labelNF); //在表单中添加格式化的数字

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值