java写简单Excel 首行是目录 然后前台下载

页面:
<form action="${path}/xxx/xxx.do"  method="get" >
        	表格下载:<input type="submit" value="下载">
    	</form>

  

@RequestMapping("/download")
	public void download(HttpServletRequest request, HttpServletResponse response, HttpSession session)
			throws Exception {
		ArrayList<String> listTitle = new ArrayList<String>();
		listTitle.add("a");
		listTitle.add("b");
		listTitle.add("c");
		listTitle.add("d");
		listTitle.add("e");
		// 创建表格及其第一行标题栏
		HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet("sheet1");
		HSSFRow row0 = sheet.createRow(0);
		for (int j = 0; j < 5; j++) {// 5列
			HSSFCell cell = row0.createCell((short) j);
			cell.setCellValue(listTitle.get(j).toString());
		}
		String maker = SystemUtil.getCureenUser(session);
		List<MainfestItem> list = transportService.getlist(maker);
		System.out.println(list.size());
		// 从第二行输入
		for (int i = 1; i <= list.size(); i++) { // 几行
			HSSFRow row = sheet.createRow(i);
			HSSFCell cell0 = row.createCell((short) 0);// 第n+1个
			cell0.setCellValue(list.get(i - 1).getId().toString());
			HSSFCell cell1 = row.createCell((short) 1);
			cell1.setCellValue(list.get(i - 1).getContainerid().toString());
			HSSFCell cell2 = row.createCell((short) 2);
			cell2.setCellValue(list.get(i - 1).getIsocode().toString());
		}
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		wb.write(os);
		byte[] content = os.toByteArray();
		InputStream is = new ByteArrayInputStream(content);
		// 设置response参数,可以打开下载页面
		response.reset();
		response.setContentType("application/vnd.ms-excel;charset=utf-8");
		response.setHeader("Content-Disposition",
				"attachment;filename=" + new String(("box" + ".xls").getBytes(), "iso-8859-1"));
		ServletOutputStream out = response.getOutputStream();
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;
		try {
			bis = new BufferedInputStream(is);
			bos = new BufferedOutputStream(out);
			byte[] buff = new byte[2048];
			int bytesRead;
			// Simple read/write loop.
			while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
				bos.write(buff, 0, bytesRead);
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		} finally {
			if (bis != null)
				bis.close();
			if (bos != null)
				bos.close();
		}
	}

  

原文地址:https://www.cnblogs.com/ynhk/p/9253883.html

时间: 2024-10-06 13:42:45

java写简单Excel 首行是目录 然后前台下载的相关文章

java生成简单Excel工作薄

前言: 代码都是建立在实际需求上的,上周做完一个调外部电影券接口的项目,这周产品又要excel表格,大致内容为:券所属影院.图片URL.等信息制作为excel表格,把每次同步过来的数据给他分析. jxl:全称JavaExcelAPI,是一个用来读写修改EXCEL的JAVA开源类库,使用起来相对简单. jar包下载地址: http://www.andykhan.com/jexcelapi/download.html 下面是刚写完的一个简单不能再简单的Demo了,没有任何附加样式,下班了,样式这周末

swing【最后一弹】JTable仿写简单Excel!

历时五天终于把所有的常用swing界面组件过了一遍,很多细节还需日后加深.愈发体会熟练查阅jdk文档的重要性,java各种类和方法太繁琐根本记不住,只能靠熟练的文档粘贴,用Eclipse会好很多. 源代码: //source code import java.awt.BorderLayout ; import java.awt.event.ActionListener ; import java.awt.event.ActionEvent ; import java.awt.event.Wind

JAVA写简单的数据库连接池

创建数据库连接以及关闭连接是很耗费时间的,并且数据库支持的连接数量也是有限的,当数据库的连接数量达到上限的时候,后续的连接就会失败.因此这里引入了数据库缓冲池. public class ConnecionPool { private int size; List<Connection> connections = new ArrayList<>(); public ConnecionPool(int size){ this.size=size; init(); } public

Java用正则表达式写简单账号密码注册判断

Java写简单账号密码注册判断 菜鸟刚学的表达式 练手代码. 1 /*在注册时通常要验证用户名和密码是否合法,运用学习过的知识完成如下操作: 2 3 用户名长度大于等于6位,必须包含数字和英文字母 4 5 密码长度大于等于8位,必须包含特殊符合_或者$,英文字母以及数字 6 7 以上两个条件同时成立注册才能成功. 8 9 10 11 * */ 12 13 import java.util.Scanner; 14 15 import java.util.regex.Matcher; 16 17 i

Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印

1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) throws IOException { String[][] testArray = new String[sheet.getPhysicalNumberOfRows()][]; for(int rowId =0;rowId<sheet.getPhysicalNumberOfRows();rowId++)

写给在迷茫期的程序员(尤其是Java程序员)入行了一年,感觉不知道接下来该怎么做才能继续进步了,求指教

入行了一年,感觉不知道接下来该怎么做才能继续进步了,求指教(V2EX) @kafka0102 :做技术可以学的东西太多了,只是在不同的阶段做好不同的规划,要结合当前所做的事情去做更深入或广度的学习.以Java Web开发为例,至少可以拓展的点有: 1.Web框架的原理学习,比如Spring.Play等等,最好自己能写出个简易的MVC框架(几千行代码).这样至少对常用设计模式.反射等技术很熟练了. 2.优秀代码研读.比如Java集合类.JUnit.Spring等源码,写出源码分析,会有很多收获.源

C# 使用NPOI导出Excel,首行冻结,添加筛选,填充颜色,列宽自适应

使用NuGet安装NPOI,添加以下命名空间 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; 添加类 ExcelExporter public static class ExcelExporter { /// <summary> /// DataTable导出Excel /// </summary> /// <param nam

java写excel表的数据导出

// POI中的api                // 创建工作簿                HSSFWorkbook wb = new HSSFWorkbook(); // 创建工作表,就是一workSheet                HSSFSheet sheet = wb.createSheet("汽车列表");                // 创建首行,索引从0开始                HSSFRow firstRow = sheet.createR

写了一个Java的简单缓存模型

缓存操作接口 /** * 缓存操作接口 * * @author xiudong * * @param <T> */ public interface Cache<T> { /** * 刷新缓存数据 * * @param key 缓存key * @param target 新数据 */ void refresh(String key, T target); /** * 获取缓存 * * @param key 缓存key * @return 缓存数据 */ T getCache(Str