java 根据模板导出excel的步骤

1.导包

2.编写导出工具类 

public class ExcelUtils {
	/**
	* 导出Excel
	* @param sheetName sheet名称
	* @param title 标题
	* @param values 内容
	* @param wb HSSFWorkbook对象
	* @return
	* @throws IOException 
	* @throws FileNotFoundException 
	*/
	public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, String[][] values, HSSFWorkbook wb)
			throws FileNotFoundException, IOException {

		// 根据模板,创建一个HSSFWorkbook,对应一个Excel文件
		HSSFWorkbook wb1 = new HSSFWorkbook(new FileInputStream(new File("d:\\file\\file.xls")));
		wb=wb1;
		
		//获取模板表
		HSSFSheet sheet = wb.getSheetAt(0);
		
		//定义一个样式(模板中第一行第一列的样式)
		HSSFCellStyle cellStyle = sheet.getRow(0).getCell(0).getCellStyle();
		
		//获取模板列宽
		float width = sheet.getColumnWidthInPixels(sheet.getRow(0).getCell(0).getColumnIndex());  
		
		//获取模板行高
		float height = sheet.getRow(0).getHeightInPoints();
		
		// 创建内容
		for (int i = 0; i < values.length; i++) {
			HSSFRow row = wb.getSheetAt(0).createRow(i + 1);
			
			//设置行高
			row.setHeightInPoints(height);
			
			for (int j = 0; j < values[i].length; j++) {
				// 将内容按顺序赋给对应的列对象
				HSSFCell cell = row.createCell(j);
				cell.setCellValue(values[i][j]);
				//使用样式
				cell.setCellStyle(cellStyle);
				//设置列宽
				sheet.setDefaultColumnWidth((int)width);
				
				
			}
		}
		return wb;
	}

}

3.测试

public class Demo {
	public static void main(String[] args) throws IOException {

		// excel标题
		String[] title = { "名称", "性别", "年龄", "学校", "班级" };


		// sheet名
		String sheetName = "学生信息表";

		String[][] content = new String[1][5];
		content[0][0] = "zh";
		content[0][1] = "男";
		content[0][2] = "18";
		content[0][3] = "文达";
		content[0][4] = "电商";

		// 创建HSSFWorkbook
		HSSFWorkbook wb = ExcelUtils.getHSSFWorkbook(sheetName, title, content, null);
		FileOutputStream stream = new FileOutputStream(new File("d:\\file\\a.xls"));
		wb.write(stream);
		stream.close();
		System.out.println("搞定");

	}

}

4.成功截图

5.上面的只是小Demo,让大家看懂原理,实际是需要下载本地的,那么

(1)修改utils的返回值为空并添加下图的方法(修改传入的参数),

(2)在执行主要工具类的主要方法前调用该方法 

(3)最后,将文件写到客户端 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据excel模板动态导出数据库数据 package text; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet.ServletContext; import net.sf.jxls.transformer.XLSTransformer; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class TextAction extends ActionSupport { /** */ private static final long serialVersionUID = 1L; private String filename; @SuppressWarnings("rawtypes") public String export() throws Exception { String templateFile = "18.xls"; // String sql = "select * from t_ry order by rybm"; // exportAndDownload(templateFile, DataBase.retrieve(sql)); List datas = new ArrayList(); @SuppressWarnings("unchecked") HashMap map = new HashMap(); map.put("name", "1111"); datas.add(map); exportAndDownload(templateFile, datas); return SUCCESS; } @SuppressWarnings({ "rawtypes", "unchecked" }) public void exportAndDownload(String templateFile, List datas) { try { filename = UUID.randomUUID() + templateFile; // FacesContext context = FacesContext.getCurrentInstance(); // ServletContext servletContext = (ServletContext) // context.getExternalContext().getContext(); ServletContext servletContext = ServletActionContext .getServletContext(); String path = servletContext.getRealPath("\\ExcelFile"); String srcFilePath = path + "\\template\\" + templateFile; String destFilePath = path + "\\download\\" + filename; Map beanParams = new HashMap(); beanParams.put("results", datas); XLSTransformer transfer = new XLSTransformer(); transfer.transformXLS(srcFilePath, beanParams, destFilePath); // Browser.execClientScript("window.location.href='../ExcelFile/downloadfile.jsp?filename=" // + destFile + "';"); } catch (Exception e) { e.printStackTrace(); } } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值