把list集合内容 填入HSSFWorkbook 在写入excel

        /**
	 * 创建excel并填入数据
	 * 
	 * @param body
	 *            数据头 JSONArray head, 主体数据
	 * @return HSSFWorkbook
	 */

	public HSSFWorkbook expExcel(List body) {

		// 创建一个excel工作簿
		HSSFWorkbook workbook = new HSSFWorkbook();
		// 创建一个sheet工作表
		HSSFSheet sheet = workbook.createSheet("图片文字识别信息");
		// 创建第0行表头,再在这行里在创建单元格,并赋值
		HSSFRow row = sheet.createRow(0);
		HSSFCell cell = null;
		cell = row.createCell(0);
		cell.setCellValue("日期");
		cell = row.createCell(1);
		cell.setCellValue("户名");
		cell = row.createCell(2);
		cell.setCellValue("金额");
		cell = row.createCell(3);
		cell.setCellValue("摘要");
		cell = row.createCell(4);
		cell.setCellValue("附言");
		// for (int i = 0; i < head.length(); i++) {
		// cell = row.createCell(i);
		// try {
		// cell.setCellValue(head.getString(i));
		// } catch (JSONException e) {
		// // TODO Auto-generated catch block
		// e.printStackTrace();
		// }//设置值
		// }

		// 创建行累加器
		int h = 0;
		// 将主体数据填入Excel中
		for (int i = 0, isize = body.size(); i < isize; i++) {
			// 收款回单标记 1为收款回单
			int flag = 0;
			// 金额标记
			boolean moneyflag = false;
			// 摘要标记
			boolean abstractflag = false;
			// 摘要临时变量
			String abstractvar = null;
			// 附言标记
			boolean postscriptflag = false;
			// 附言临时变量
			String postscriptvar = null;

			// 创建行
			// row = sheet.createRow(i);

			String stuInfo = body.get(i);
			// 把String转换成JSONArray
			JSONArray myJson = JSONArray.fromObject(stuInfo);
			for (int j = 0; j < myJson.size(); j++) {

				// cell = row.createCell(j);

				String a = myJson.getJSONObject(j).getString("words");
				// 判断是否是收款回单
				if (a.indexOf("收款回单") != -1 && a.indexOf("支付宝公司收款回单") == -1) {// 不等于-1为包含
					// 修改标记
					flag = 1;
					// 创建行(每个收款回单创建一行)
					h++;
					row = sheet.createRow(h);
				}
				// flag=1为收款回单
				if (flag == 1) {
					// 判断是否为需要的五列
					if (a.indexOf("日期") != -1) {
						// 创建列
						cell = row.createCell(0);
						// 写入
						try {
							// 去掉不需要的字符串a.replace("日期:","")
							cell.setCellValue(a.replace("日期:", ""));
						} catch (JSONException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
					if (a.indexOf("付款人户名") != -1) {
						cell = row.createCell(1);
						try {
							cell.setCellValue(a.replace("付款人户名:", ""));
						} catch (JSONException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
					if (a.indexOf("付方名称") != -1) {
						cell = row.createCell(1);
						try {
							cell.setCellValue(a.replace("付方名称:", ""));
						} catch (JSONException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
					// moneyflag为true时判断下一行
					if (moneyflag) {
						// 如果不是付款人账号、付款人姓名等列,则为金额,并写入
						if (a.indexOf("付款人账号:") == -1 && a.indexOf("付款人户名:") == -1 && a.indexOf("摘要:") == -1
								&& a.indexOf("付款人账号:") == -1) {
							cell = row.createCell(2);
							String moneytwo = a.replace("CNY", "");
							try {
								cell.setCellValue(moneytwo);
							} catch (JSONException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						moneyflag = false;
					}
					if (a.indexOf("小写") != -1) {
						// 去掉不需要的字符串
						String money = a.replace("金额:(小写)CNY", "").replace("金额(小写):", "").replace("金额(小写):CNY", "")
								.replace("(小写)", "").replace("CNY", "");
						if (money.equals("")) {
							// 金额为空时判断下一行
							moneyflag = true;
						} else {
							cell = row.createCell(2);
							try {
								cell.setCellValue(money);
							} catch (JSONException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}

					}
					// 进入摘要下一行
					if (abstractflag) {
						cell = row.createCell(3);
						// 如果不是以下三列,则还是摘要 ,拼接上一行摘要,并写入
						if (a.indexOf("经办:") == -1 && a.indexOf("附言:") == -1 && a.indexOf("回单编号:") == -1) {
							try {
								//
								cell.setCellValue(abstractvar + a);
							} catch (JSONException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						} else {
							try {
								// 写入上一行摘要
								cell.setCellValue(abstractvar);
							} catch (JSONException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						abstractvar = null;
						abstractflag = false;
					}
					// 判断是否为摘要,并且不是附言
					if (a.indexOf("摘要") != -1 && a.indexOf("附言") == -1) {
						abstractvar = a.replace("摘要:", "");
						// 修改摘要标记
						abstractflag = true;
					}
					if (postscriptflag) {
						cell = row.createCell(4);
						if (a.indexOf("经办:") == -1 && a.indexOf("回单编号:") == -1) {
							try {
								cell.setCellValue(postscriptvar + a);
							} catch (JSONException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						} else {
							try {
								cell.setCellValue(postscriptvar);
							} catch (JSONException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						postscriptvar = null;
						postscriptflag = false;
					}
					if (a.indexOf("附言") != -1) {
						postscriptvar = a.replace("附言:", "").replace("摘要:", "");
						// 修改附言标记为真
						postscriptflag = true;

					}
				}
			}
			for (int k = 0, isiz = myJson.size(); k < isiz; k++) {
				sheet.autoSizeColumn(k);
			}

		}
		return workbook;
	}

你可能感兴趣的:(Java)