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

8 篇文章 0 订阅


运用场景:

导出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



  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
使用jxl.jar包将对象list转换为excel的inputstream可以分为以下几个步骤: 1. 创建一个Workbook对象,用于创建Excel文件。 2. 创建一个WritableSheet对象,用于创建Excel文件中的Sheet。 3. 创建表头,将表头写入WritableSheet对象中。 4. 遍历对象list,将每个对象的属性值写入WritableSheet对象中。 5. 调整列宽,使得Excel文件中的内容能够完整显示。 6. 将Workbook对象转换为inputstream,以便后续操作。 下面是一个示例代码,可以参考一下: ``` // 创建Workbook对象 WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls")); // 创建WritableSheet对象 WritableSheet sheet = workbook.createSheet("Sheet1", 0); // 创建表头 Label label1 = new Label(0, 0, "姓名"); Label label2 = new Label(1, 0, "年龄"); sheet.addCell(label1); sheet.addCell(label2); // 遍历对象list,将每个对象的属性值写入WritableSheet对象中 List<Person> personList = getPersonList(); for (int i = 0; i < personList.size(); i++) { Person person = personList.get(i); Label name = new Label(0, i + 1, person.getName()); Label age = new Label(1, i + 1, String.valueOf(person.getAge())); sheet.addCell(name); sheet.addCell(age); } // 调整列宽 sheet.setColumnView(0, 20); sheet.setColumnView(1, 10); // 将Workbook对象转换为inputstream ByteArrayOutputStream baos = new ByteArrayOutputStream(); workbook.write(); workbook.close(); InputStream inputStream = new ByteArrayInputStream(baos.toByteArray()); ``` 相关问题: 1. 如何使用jxl.jar包读取Excel文件? 2. 除了jxl.jar,还有哪些Java库可以用于操作Excel文件? 3. 如何在Excel文件中添加图表?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小凡vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值