java使用jxl導出excel字符串類型轉化成數值型

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); //在表單中添加格式化的數字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章