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


运用场景:

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

java使用jxl导出excel字符串类型转化成数值型_第1张图片


解决办法:

// 创建一个可写入的工作表
			// 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

java使用jxl导出excel字符串类型转化成数值型_第2张图片

你可能感兴趣的:(java,数字,Excel,JXL,文本)