网页上的表格用excel导出

时间:2022-02-01 06:08:37

网页上的表格有时需要导出存储。

需要用到java的一个工具包jxl.jar,地址https://download.csdn.net/download/bushqiang/10320406


1.网页上的table

<a href="export">导出表格</a>

	<table border="5">
		<tr>
			<th>Month</th>
			<th>money</th>
		</tr>
		<tr>
			<td>January</td>
			<td>10000</td>
		</tr>
		<tr>
			<td>February</td>
			<td>8000</td>
		</tr>
	</table>

2.后台的Servlet

	@RequestMapping("/export")
	public void export(HttpServletRequest request, HttpServletResponse response) throws IOException {
		String path=export();
		System.out.println(path);
		response.sendRedirect("/contestForxls/" + path);
	}

3.java创建表格的方法

public static String export() {
		//生成xls的位置,要在webapps下,下载时才能访问的到
		final String exportPath = "D:\\OnlineJudge\\tomcat_normal\\webapps\\contestForxls\\";
		// 添加标题
		List<String> title = new ArrayList<String>();
		title.add("month");
		title.add("money");

		OutputStream os = null;
		// 输出的excel的路径
		String filePath = exportPath + "test.xls";
		try {
			//如果文件夹不存在就创建
			File baseFile = new File(exportPath);
			if (!baseFile.exists()) {
				baseFile.createNewFile();
			}
			//如果文件夹存在就删除
			File exportFile = new File(filePath);
			if (exportFile.exists()) {
				exportFile.delete();
			}
			// Excel单元格的一些样式
			WritableCellFormat wcCenter = new WritableCellFormat();
			wcCenter.setAlignment(Alignment.CENTRE);

			WritableCellFormat wcCenterRed = new WritableCellFormat();
			wcCenterRed.setAlignment(Alignment.CENTRE);
			wcCenterRed.setBorder(Border.ALL, BorderLineStyle.THIN);
			wcCenterRed.setBackground(jxl.format.Colour.RED);

			WritableCellFormat wcCenterGreen = new WritableCellFormat();
			wcCenterGreen.setAlignment(Alignment.CENTRE);
			wcCenterGreen.setBorder(Border.ALL, BorderLineStyle.THIN);
			wcCenterGreen.setBackground(jxl.format.Colour.GREEN);

			// 创建Excel工作薄
			WritableWorkbook wwb;
			// 新建立一个jxl文件,即生成.xls文件
			os = new FileOutputStream(filePath);
			wwb = Workbook.createWorkbook(os);
			// 添加第一个工作表并设置第一个Sheet的名字
			WritableSheet sheet = wwb.createSheet("test", 0);
			Label label;
			for (int i = 0; i < title.size(); i++) {
				// Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z
				// 在Label对象的子对象中指明单元格的位置和内容
				label = new Label(i, 0, title.get(i), wcCenter);
				// 将定义好的单元格添加到工作表中
				sheet.addCell(label);
			}

			// 下面往xls表格里面填充数据,是一行一行的添加
			int row = 1;// 行,第0行给标题占用了
			//第一行
			int col = 0;// 列
			label = new Label(col++, row, "January", wcCenter);
			sheet.addCell(label);
			label = new Label(col++, row, "10000", wcCenter);
			sheet.addCell(label);
			//第二行
			row++;
			col = 0;// 列
			label = new Label(col++, row, "February", wcCenter);
			sheet.addCell(label);
			label = new Label(col++, row, "8000", wcCenter);
			sheet.addCell(label);
			// 写入数据
			wwb.write();
			// 关闭文件
			wwb.close();
			int index = filePath.lastIndexOf('\\');
			if (index != -1) {
				filePath = filePath.substring(index + 1);
			}
			return filePath;
		} catch (Exception e) {
			System.out.println("导出错误!");
			e.printStackTrace();
			// return "导出错误!";
			return null;
		} finally {
			if (os != null) {
				try {
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

4.第三步就直接可以创建一个excel表格了,生成的数据是写死的,项目中的一般都是从数据库中获取,前端表格也应该是从数据库中获取。效果图。

网页上的表格用excel导出

网页上的表格用excel导出