精华内容
下载资源
问答
  • struts2导出excel java 导出excel JXL

    热门讨论 2012-05-08 11:12:36
    struts2导出excel java 导出excel: JXL_excel: 可以直接在elipse下运行的例子 可以直接导出excel文件(包含所需的jar包) CSharpJExcel: 是JXL的官方下载的 包括详细的文档 和jar包
  • java 数据导出Excel java POI 导出数据Excel 一、说明 1、使用Apache poi 实现java导出excel格式数据。 2、依赖pom: <dependency> <groupId>org.apache.poi</groupId> <artifa....

                       java 数据导出Excel java POI 导出数据Excel

     

    一、说明

    1、使用Apache poi 实现java中导出excel格式数据。

    2、依赖pom:

         <dependency>
    	    <groupId>org.apache.poi</groupId>
    	    <artifactId>poi</artifactId>
    	    <version>3.15</version>
    	</dependency>
        
    	<dependency>
    	    <groupId>org.apache.poi</groupId>
    	    <artifactId>poi-ooxml</artifactId>
    	    <version>3.15</version>
    	</dependency>

    二、具体代码实现

    1、创建 ExcelExport 类,实现excel数据导出

    import java.io.File;
    import java.io.FileOutputStream;
    import java.net.URLEncoder;
    import java.util.List;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.util.HSSFColor;
    import org.apache.poi.ss.usermodel.CellStyle;
    import org.apache.poi.ss.usermodel.Font;
    import org.apache.poi.ss.usermodel.IndexedColors;
    import org.apache.poi.xssf.streaming.SXSSFCell;
    import org.apache.poi.xssf.streaming.SXSSFRow;
    import org.apache.poi.xssf.streaming.SXSSFSheet;
    import org.apache.poi.xssf.streaming.SXSSFWorkbook;
    import org.apache.poi.xssf.usermodel.XSSFRichTextString;
    
    /**
     * description: Excel 数据输出
     * @version v1.0
     * @author w
     * @date 2020年3月30日下午1:46:59
     **/
    public class ExcelExport {
    	
    	private ExcelExport INSTANSE = new ExcelExport ();
    	
    	/**
    	 * description: 导出数据excel
    	 * @param sheetName
    	 * @param headers
    	 * @param dataList
    	 * @param destFile
    	 * @return void
    	 * @version v1.0
    	 * @author w
    	 * @date 2020年3月30日 下午2:23:39
    	 */
    	public static void export(String sheetName, String[] headers, List<List<Object>> dataList, File destFile) throws Exception {
    		SXSSFWorkbook workbook = new SXSSFWorkbook();
    		createSheet(sheetName, headers, dataList, workbook);
    		workbook.write(new FileOutputStream(destFile));
    	}
    	
    	
    	/**
    	 * description: 导出excel --- 支持web
    	 * @param sheetName  sheet表名字
    	 * @param headers 表头
    	 * @param dataList 表数据
    	 * @param fileName  导出文件名
    	 * @param response 
    	 * @return void
    	 * @version v1.0
    	 * @author w
    	 * @date 2020年3月31日 下午2:48:46
    	 */
    	public static void export(String sheetName , String[] headers , List<List<Object>> dataList ,String fileName 
    			 								   , HttpServletResponse response) throws Exception {
    		SXSSFWorkbook workbook = new SXSSFWorkbook();
    		createSheet(sheetName, headers, dataList, workbook);
    		response.reset();
            response.setContentType("application/octet-stream; charset=utf-8");
            response.setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode(fileName ,"UTF-8"));
            workbook.write(response.getOutputStream());
            // 删除临时文件
            workbook.dispose();
    	}
    	
    	/**
    	 * description: 创建sheet表格
    	 * @param sheetName  表sheet 名字
    	 * @param headers  表头
    	 * @param dataList 表数据
    	 * @param wb
    	 * @return void
    	 * @version v1.0
    	 * @author w
    	 * @date 2020年3月30日 下午2:33:39
    	 */
    	public static void createSheet(String sheetName , String[] headers , List<List<Object>> dataList , SXSSFWorkbook wb) {
    		SXSSFSheet sheet = wb.createSheet(sheetName);
    		// 设置表头和单元格格式
    		CellStyle headStyle = setHeaderStyle(wb);
    		CellStyle bodyStyle = setBodyStyle(wb);
    		// 创建表头和单元格数据
            createHeader(headers, sheet, headStyle);
            createBody(dataList, sheet, bodyStyle);
    	}
    	
    	/**
    	 * description: 创建表头
    	 * @param headers
    	 * @param sheet
    	 * @param headStyle
    	 * @return void
    	 * @version v1.0
    	 * @author w
    	 * @date 2020年3月30日 下午3:03
    	 */
    	private static void createHeader(String[] headers, SXSSFSheet sheet, CellStyle headStyle) {
    		SXSSFRow row = sheet.createRow(0);
    		row.setHeightInPoints(16F);
    		for (int i = 0; i < headers.length; i++) {
    			// 创建单元格
    			SXSSFCell cell = row.createCell(i);
    			cell.setCellStyle(headStyle);
    			XSSFRichTextString text = new XSSFRichTextString(headers[i]);
                cell.setCellValue(text);
                sheet.trackAllColumnsForAutoSizing();
                sheet.autoSizeColumn(i);
    		}
    	}
    	
    	/**
    	 * description: 表格中填充数据
    	 * @param dataList
    	 * @param sheet
    	 * @param bodyStyle
    	 * @return void
    	 * @version v1.0
    	 * @author w
    	 * @date  2020年3月30日 下午3:13
    	 */
    	private static void createBody(List<List<Object>> dataList, SXSSFSheet sheet, CellStyle bodyStyle) {
    		for (int i = 0; i < dataList.size(); i++) {
    			// 从第二行开始,第一行做表头
    			SXSSFRow row = sheet.createRow(i+1);
    			List<Object> rowList = dataList.get(i);
    			for (int j = 0; j < rowList.size(); j++) {
    				SXSSFCell cell = row.createCell(j);
    				cell.setCellStyle(bodyStyle);
    				XSSFRichTextString text = new XSSFRichTextString(rowList.get(j).toString());
    				cell.setCellValue(text);
    				sheet.trackAllColumnsForAutoSizing();
    				sheet.autoSizeColumn(i);
    			}
    		}
    	}
    	
    	/**
    	 * description: 设置单元格内容样式
    	 * @param wb
    	 * @return HSSFCellStyle
    	 * @version v1.0
    	 * @author w
    	 * @date 2020年3月30日 下午2:42:39
    	 */
    	private static CellStyle setBodyStyle(SXSSFWorkbook wb) {
    		// 设置表格单元格格式
    		CellStyle style = wb.createCellStyle();
            style.setFillForegroundColor(HSSFColor.WHITE.index);
            style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
            style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
            style.setBorderRight(HSSFCellStyle.BORDER_THIN);
            style.setBorderTop(HSSFCellStyle.BORDER_THIN);
            style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
    
            // 设置字体格式
            Font font = wb.createFont();
            font.setFontName("微软雅黑");
            font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
            style.setFont(font);
            return style;
    	}
    
    	/**
    	 * description: 设置表头样式 
    	 * @param wb
    	 * @return
    	 * @return HSSFCellStyle
    	 * @version v1.0
    	 * @author w
    	 * @date 2020年3月30日 下午2:38:39
    	 */
    	private static CellStyle setHeaderStyle(SXSSFWorkbook wb) {
    		// 设置表格单元格格式
    		CellStyle style = wb.createCellStyle();
    		style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
    		style.setBorderRight(CellStyle.BORDER_THIN);
    		style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
    		style.setBorderLeft(CellStyle.BORDER_THIN);
    		style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
    		style.setBorderTop(CellStyle.BORDER_THIN);
    		style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
    		style.setBorderBottom(CellStyle.BORDER_THIN);
    		style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
    	    
    	    // 设置字体格式
    	    Font font = wb.createFont();
    	    font.setFontName("微软雅黑");
    	    font.setFontHeightInPoints((short) 10);
    	    style.setFont(font);
    	    return style;
    	}
    
    }
    

     

    2、创建ExcelController,测试web情况下,导出数据

        /**
    	 * description: excel 数据导出 
    	 * @return String
    	 * @version v1.0
    	 * @author w
    	 * @throws IOException 
    	 * @date 2020年3月31日 下午2:41:03
    	 */
    	@RequestMapping(value= "/export")
    	public String export(HttpServletResponse response) throws IOException {
    		String[] headers = new String[] {"姓名","年龄","级别"};
    		List<List<Object>> dataList = new ArrayList<>();
    		for(int x = 0 ; x < 3 ; x++) {
    			List<Object> data = new ArrayList<Object>();
    			data.add("姓名ssssss"+x);
    			data.add(18+x);
    			data.add("级别"+x);
    			dataList.add(data);
    		}
    		try {
    			ExcelExport.export("用户数据", headers, dataList,"poi导出模板.xlsx" ,response);
    			return null ;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return "导出失败 --";
    	}

    3、测试,访问: http://localhost:999/spring-mvc-tourist/excelController/export

    4、结果:浏览器返回excel,数据都填充进去

    三、总结

     

    1、本示例使用的是 poi 3.15版的,其他版本之间,可能出现无法使用的情况,需要做部分调整。

    2、具体使用,请查看 ExcelExport 类中方法注释情况。

    3、不懂的,可以私信提供源码的噢。

     

     

     

    展开全文
  • 导入导出Excel java实现实例源码和api

    热门讨论 2009-11-22 02:58:02
    导入导出Excel java实现实例。 本人自己学习jxl的程序实例,可运行。
  • struts2导出excel java 导出excel

    千次阅读 2012-05-08 10:57:58
    l例子很简单,就一个Action类和一个Service类   1.所需jar包 ...struts2需要jar包:commons-logging.jar、freemarker-2.3.8.jar、ognl-2.6.11.jar、struts2-core-2.0....excel导出:jxl.jar 2.配置 Web.

    l例子很简单,就一个Action类和一个Service类

     

    1.所需jar包

    struts2需要jar包:commons-logging.jar、freemarker-2.3.8.jar、ognl-2.6.11.jar、struts2-core-2.0.11.1.jar、xwork-2.0.4.jar

    excel导出:jxl.jar

    2.配置

    Web.xml代码   收藏代码
    1.   .....            
    2.              <filter>  
    3.     <filter-name>struts2</filter-name>  
    4.     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
    5. </filter>  
    6. <filter-mapping>  
    7.     <filter-name>struts2</filter-name>  
    8.     <url-pattern>/*</url-pattern>  
    9. </filter-mapping>  
    10.  ......  
     
    Struts.xml代码   收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >  
    3. <struts>  
    4.     <package name="platform-default" extends="struts-default">  
    5.         <action name="excel" class="action.ExcelAction">  
    6.             <result name="excel" type="stream">  
    7.                 <param name="contentType">  
    8.                     application/vnd.ms-excel  
    9.                 </param>  
    10.                 <param name="inputName">excelStream</param>  
    11.                 <param name="contentDisposition">  
    12.                     filename="export.xls"  
    13.                 </param>  
    14.                 <param name="bufferSize">1024</param>  
    15.             </result>  
    16.         </action>  
    17.     </package>  
    18. </struts>  

    3.Action实现

     

    Excelaction代码   收藏代码
    1. package action;  
    2.   
    3. import java.io.InputStream;  
    4. import service.IExcelService;  
    5. import service.impl.ExcelServiceImpl;  
    6. public class ExcelAction {  
    7.       
    8.     InputStream excelStream;  
    9.       
    10.     public String execute(){  
    11.         IExcelService es = new ExcelServiceImpl();  
    12.         excelStream = es.getExcelInputStream();  
    13.         return "excel";  
    14.     }  
    15.     //get set...  
    16. }  

    4.Service实现

    a.接口

     

    Iexcelservice代码   收藏代码
    1. package service;  
    2. import java.io.InputStream;  
    3. public interface IExcelService {  
    4.     InputStream getExcelInputStream();  
    5. }  

    b.实现类

     

    Excelserviceimpl.java代码   收藏代码
    1. package service.impl;  
    2.   
    3. import java.io.ByteArrayInputStream;  
    4. import java.io.ByteArrayOutputStream;  
    5. import java.io.InputStream;  
    6. import java.io.OutputStream;  
    7.   
    8. import jxl.Workbook;  
    9. import jxl.write.WritableSheet;  
    10. import jxl.write.WritableWorkbook;  
    11. import service.IExcelService;  
    12.   
    13. public class ExcelServiceImpl implements IExcelService {  
    14.   
    15.     @Override  
    16.     public InputStream getExcelInputStream() {  
    17.         //将OutputStream转化为InputStream  
    18.         ByteArrayOutputStream out = new ByteArrayOutputStream();  
    19.         putDataOnOutputStream(out);  
    20.         return new ByteArrayInputStream(out.toByteArray());  
    21.     }  
    22.   
    23.     private void putDataOnOutputStream(OutputStream os) {  
    24.         jxl.write.Label label;  
    25.         WritableWorkbook workbook;  
    26.         try {  
    27.             workbook = Workbook.createWorkbook(os);  
    28.             WritableSheet sheet = workbook.createSheet("Sheet1"0);  
    29.   
    30.             label = new jxl.write.Label(00"struts2导出excel");  
    31.             sheet.addCell(label);  
    32.               
    33.             workbook.write();  
    34.             workbook.close();  
    35.         } catch (Exception e) {  
    36.             e.printStackTrace();  
    37.         }  
    38.     }  
    39. }  

     

     这样例子就完成了:

    直接访问:http://127.0.0.1:8080/JXL_excel/excel.action 就可以导出excel

     

    说明:

    1、例子中OutputStream转InputStream是一种简单的实现,但是需要内存比较多,可以参考:
    http://ostermiller.org/convert_java_outputstream_inputstream.html

    2、参考实现:http://merrygrass.iteye.com/blog/558274

    3、java报表JXL和POI打印设置

     4、源码下载(例子和jar包 在eclipse下 导入可直接运行)http://download.csdn.net/detail/zljjava/4284947

    展开全文
  • 根据excel模版导出excel,核心代码如下: /*-------------- 1.准备数据--------------*/ List<Object> resultList = new ArrayList<Object>(); Date todays = new Date();//日期 List<Object> ...
  • java 导出EXCEL

    2010-08-27 16:49:01
    java 导出EXCELjava 导出EXCELjava 导出EXCELjava 导出EXCEL
  • Java导出Excel

    2018-09-10 15:30:11
    Java导出Excel,jxl 导出Excel 支持大数据量导出 导出数据量大
  • java 数据导出excel

    2011-01-27 14:52:14
    java 数据导出excel java操作excel如此方便快捷
  • Java数据导入导出Excel

    2010-06-13 14:31:14
    Java数据导入导出Excel Java代码
  • 在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的... 呵呵,首先我们来导出EXCEL格式的文件吧。现在主流的操作Ex...

            在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下。(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^)

             呵呵,首先我们来导出EXCEL格式的文件吧。现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI。这里我们用Apache POI!我们先去Apache的大本营下载POI的jar包:http://poi.apache.org/ ,我这里使用的是3.0.2版本。

            将3个jar包导入到classpath下,什么?忘了怎么导包?不会吧!好,我们来写一个导出Excel的实用类(所谓实用,是指基本不用怎么修改就可以在实际项目中直接使用的!)。我一直强调做类也好,做方法也好,一定要通用性和灵活性强。下面这个类就算基本贯彻了我的这种思想。那么,熟悉许老师风格的人应该知道,这时候该要甩出一长串代码了。没错,大伙请看:

    public class Student {
    	private long id;
    	private String name;
    	private int age;
    	private boolean sex;
    	private Date birthday;
    	// Constructor, Getter and Setter...
    }
    public class Book {
    	private int bookId;
    	private String name;
    	private String author;
    	private float price;
    	private String isbn;
    	private String pubName;
    	private byte[] preface;
    	// Constructor, Getter and Setter...
    }

    上面这两个类一目了然,就是两个简单的javabean风格的类。再看下面真正的重点类:

    public class ExportExcel<T> {
    	public void exportExcel(Collection<T> dataset, OutputStream out) {
    		exportExcel("测试POI导出EXCEL文档", null, dataset, out, "yyyy-MM-dd");
    	}
    
    	public void exportExcel(String[] headers, Collection<T> dataset,
    			OutputStream out) {
    		exportExcel("测试POI导出EXCEL文档", headers, dataset, out, "yyyy-MM-dd");
    	}
    
    	public void exportExcel(String[] headers, Collection<T> dataset,
    			OutputStream out, String pattern) {
    		exportExcel("测试POI导出EXCEL文档", headers, dataset, out, pattern);
    	}
    
    	/**
    	 * 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上
    	 *
    	 * @param title
    	 *            表格标题名
    	 * @param headers
    	 *            表格属性列名数组
    	 * @param dataset
    	 *            需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。此方法支持的
    	 *            javabean属性的数据类型有基本数据类型及String,Date,byte[](图片数据)
    	 * @param out
    	 *            与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中
    	 * @param pattern
    	 *            如果有时间数据,设定输出格式。默认为"yyy-MM-dd"
    	 */
    	@SuppressWarnings("unchecked")
    	public void exportExcel(String title, String[] headers,
    			Collection<T> dataset, OutputStream out, String pattern) {
    		// 声明一个工作薄
    		HSSFWorkbook workbook = new HSSFWorkbook();
    		// 生成一个表格
    		HSSFSheet sheet = workbook.createSheet(title);
    		// 设置表格默认列宽度为15个字节
    		sheet.setDefaultColumnWidth((short) 15);
    		// 生成一个样式
    		HSSFCellStyle style = workbook.createCellStyle();
    		// 设置这些样式
    		style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
    		style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    		style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    		style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    		style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    		style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    		// 生成一个字体
    		HSSFFont font = workbook.createFont();
    		font.setColor(HSSFColor.VIOLET.index);
    		font.setFontHeightInPoints((short) 12);
    		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    		// 把字体应用到当前的样式
    		style.setFont(font);
    		// 生成并设置另一个样式
    		HSSFCellStyle style2 = workbook.createCellStyle();
    		style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
    		style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    		style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    		style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    		style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
    		style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
    		style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    		style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    		// 生成另一个字体
    		HSSFFont font2 = workbook.createFont();
    		font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
    		// 把字体应用到当前的样式
    		style2.setFont(font2);
    		// 声明一个画图的顶级管理器
    		HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
    		// 定义注释的大小和位置,详见文档
    		HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(
    				0, 0, 0, 0, (short) 4, 2, (short) 6, 5));
    		// 设置注释内容
    		comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
    		// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.
    		comment.setAuthor("leno");
    		// 产生表格标题行
    		HSSFRow row = sheet.createRow(0);
    		for (short i = 0; i < headers.length; i++) {
    			HSSFCell cell = row.createCell(i);
    			cell.setCellStyle(style);
    			HSSFRichTextString text = new HSSFRichTextString(headers[i]);
    			cell.setCellValue(text);
    		}
    		// 遍历集合数据,产生数据行
    		Iterator<T> it = dataset.iterator();
    		int index = 0;
    		while (it.hasNext()) {
    			index++;
    			row = sheet.createRow(index);
    			T t = (T) it.next();
    			// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
    			Field[] fields = t.getClass().getDeclaredFields();
    			for (short i = 0; i < fields.length; i++) {
    				HSSFCell cell = row.createCell(i);
    				cell.setCellStyle(style2);
    				Field field = fields[i];
    				String fieldName = field.getName();
    				String getMethodName = "get"
    						+ fieldName.substring(0, 1).toUpperCase()
    						+ fieldName.substring(1);
    				try {
    					Class tCls = t.getClass();
    					Method getMethod = tCls.getMethod(getMethodName,
    							new Class[] {});
    					Object value = getMethod.invoke(t, new Object[] {});
    					// 判断值的类型后进行强制类型转换
    					String textValue = null;
    					// if (value instanceof Integer) {
    					// int intValue = (Integer) value;
    					// cell.setCellValue(intValue);
    					// } else if (value instanceof Float) {
    					// float fValue = (Float) value;
    					// textValue = new HSSFRichTextString(
    					// String.valueOf(fValue));
    					// cell.setCellValue(textValue);
    					// } else if (value instanceof Double) {
    					// double dValue = (Double) value;
    					// textValue = new HSSFRichTextString(
    					// String.valueOf(dValue));
    					// cell.setCellValue(textValue);
    					// } else if (value instanceof Long) {
    					// long longValue = (Long) value;
    					// cell.setCellValue(longValue);
    					// }
    					if (value instanceof Boolean) {
    						boolean bValue = (Boolean) value;
    						textValue = "男";
    						if (!bValue) {
    							textValue = "女";
    						}
    					} else if (value instanceof Date) {
    						Date date = (Date) value;
    						SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    						textValue = sdf.format(date);
    					} else if (value instanceof byte[]) {
    						// 有图片时,设置行高为60px;
    						row.setHeightInPoints(60);
    						// 设置图片所在列宽度为80px,注意这里单位的一个换算
    						sheet.setColumnWidth(i, (short) (35.7 * 80));
    						// sheet.autoSizeColumn(i);
    						byte[] bsValue = (byte[]) value;
    						HSSFClientAnchor anchor = new HSSFClientAnchor(0,
    								0, 1023, 255, (short) 6, index, (short) 6,
    								index);
    						anchor.setAnchorType(2);
    						patriarch.createPicture(anchor, workbook
    								.addPicture(bsValue,
    										HSSFWorkbook.PICTURE_TYPE_JPEG));
    					} else {
    						// 其它数据类型都当作字符串简单处理
    						textValue = value.toString();
    					}
    					// 如果不是图片数据,就利用正则表达式判断textValue是否全部由数字组成
    					if (textValue != null) {
    						Pattern p = Pattern.compile("^//d+(//.//d+)?$");
    						Matcher matcher = p.matcher(textValue);
    						if (matcher.matches()) {
    							// 是数字当作double处理
    							cell.setCellValue(Double.parseDouble(textValue));
    						} else {
    							HSSFRichTextString richString = new HSSFRichTextString(
    									textValue);
    							HSSFFont font3 = workbook.createFont();
    							font3.setColor(HSSFColor.BLUE.index);
    							richString.applyFont(font3);
    							cell.setCellValue(richString);
    						}
    					}
    				} catch (SecurityException e) {
    					e.printStackTrace();
    				} catch (NoSuchMethodException e) {
    					e.printStackTrace();
    				} catch (IllegalArgumentException e) {
    					e.printStackTrace();
    				} catch (IllegalAccessException e) {
    					e.printStackTrace();
    				} catch (InvocationTargetException e) {
    					e.printStackTrace();
    				} finally {
    					// 清理资源
    				}
    			}
    		}
    		try {
    			workbook.write(out);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static void main(String[] args) {
    		// 测试学生
    		ExportExcel<Student> ex = new ExportExcel<Student>();
    		String[] headers = { "学号", "姓名", "年龄", "性别", "出生日期" };
    		List<Student> dataset = new ArrayList<Student>();
    		dataset.add(new Student(10000001, "张三", 20, true, new Date()));
    		dataset.add(new Student(20000002, "李四", 24, false, new Date()));
    		dataset.add(new Student(30000003, "王五", 22, true, new Date()));
    		// 测试图书
    		ExportExcel<Book> ex2 = new ExportExcel<Book>();
    		String[] headers2 = { "图书编号", "图书名称", "图书作者", "图书价格", "图书ISBN",
    				"图书出版社", "封面图片" };
    		List<Book> dataset2 = new ArrayList<Book>();
    		try {
    			BufferedInputStream bis = new BufferedInputStream(
    					new FileInputStream("V://book.bmp"));
    			byte[] buf = new byte[bis.available()];
    			while ((bis.read(buf)) != -1) {
    				//
    			}
    			dataset2.add(new Book(1, "jsp", "leno", 300.33f, "1234567",
    					"清华出版社", buf));
    			dataset2.add(new Book(2, "java编程思想", "brucl", 300.33f,
    					"1234567", "阳光出版社", buf));
    			dataset2.add(new Book(3, "DOM艺术", "lenotang", 300.33f,
    					"1234567", "清华出版社", buf));
    			dataset2.add(new Book(4, "c++经典", "leno", 400.33f, "1234567",
    					"清华出版社", buf));
    			dataset2.add(new Book(5, "c#入门", "leno", 300.33f, "1234567",
    					"汤春秀出版社", buf));
    			OutputStream out = new FileOutputStream("E://a.xls");
    			OutputStream out2 = new FileOutputStream("E://b.xls");
    			ex.exportExcel(headers, dataset, out);
    			ex2.exportExcel(headers2, dataset2, out2);
    			out.close();
    			out2.close();
    			JOptionPane.showMessageDialog(null, "导出成功!");
    			System.out.println("excel导出成功!");
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }

            写完之后,如果您不是用eclipse工具生成的Servlet,千万别忘了在web.xml上注册这个Servelt。而且同样的,拷贝一张小巧的图书图片命名为book.jpg放置到当前WEB根目录的/WEB-INF/下。部署好web工程,用浏览器访问Servlet看下效果吧!是不是下载成功了。呵呵,您可以将下载到本地的excel报表用打印机打印出来,这样您就大功告成了。完事了我们就思考:我们发现,我们做的方法,不管是本地调用,还是在WEB服务器端用Servlet调用;不管是输出学生列表,还是图书列表信息,代码都几乎一样,而且这些数据我们很容器结合后台的DAO操作数据库动态获取。恩,类和方法的通用性和灵活性开始有点感觉了。好啦,祝您学习愉快!

    Java导出Excel弹出下载框

            将ExportExcel类的main方法改成public void test(),OutputStream out = new FileOutputStream("E://a.xls");这边可以对应Servlet适当改下路径,Servlet代码如下:

    public class ExcelServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		(new ExportExcel()).test();
    		String str = "a.xls";
    		//String path = request.getSession().getServletContext().getRealPath(str);
    		download("E://a.xls", response);
    	}
    	private void download(String path, HttpServletResponse response) {
    		try {
    			// path是指欲下载的文件的路径。
    			File file = new File(path);
    			// 取得文件名。
    			String filename = file.getName();
    			// 以流的形式下载文件。
    			InputStream fis = new BufferedInputStream(new FileInputStream(path));
    			byte[] buffer = new byte[fis.available()];
    			fis.read(buffer);
    			fis.close();
    			// 清空response
    			response.reset();
    			// 设置response的Header
    			response.addHeader("Content-Disposition", "attachment;filename="
    					+ new String(filename.getBytes()));
    			response.addHeader("Content-Length", "" + file.length());
    			OutputStream toClient = new BufferedOutputStream(
    					response.getOutputStream());
    			response.setContentType("application/vnd.ms-excel;charset=gb2312");
    			toClient.write(buffer);
    			toClient.flush();
    			toClient.close();
    		} catch (IOException ex) {
    			ex.printStackTrace();
    		}
    	}
    }

    补充:

    于2014-08-28补充

    今天(20140828)用博文中的代码重新调试了下,献上Java POI 导入导出Excel简单小例子一枚,方便你我。

    源代码下载地址:http://download.csdn.net/detail/evangel_z/7834173

    注:

    1)源代码是不含jar包的,jar包可以去本文补充部分下边的链接中下载,本地测试例子中所使用的所有jar包如下:

    2)直接使用该例子源代码的话,需要在E盘下放置一张名为book的png格式图片(book.png),用于导出含有图片的excel文件(b.xls)。当然,您可以根据实际需要更换代码中的图片路径;

    3)使用本文源代码正常启动服务器后,web页面导出Excel文档具体路径:http://localhost:8080/poi/export

    4)例子代码比较简单,仅供参考……

     

    于2014-12-02补充

    前段时间,在之前代码的基础上,抽空改了改代码,具体如下:

    1)去除图片和Excel文件未找到的bug;

    2)增加代码需要的jar包;

    3)完整代码已放在github上……

    最新代码下载地址:https://github.com/T5750/poi

     

    于2015-01-13补充

    由于不少热心网友问读取Excel模版导出相关问题,故今晚在之前代码的基础上,临时加了些代码,具体如下:

    1)新增使用POI读取Excel模版的例子,模版为poi/WebContent/docs/replaceTemplate.xls;

    2)在poi/src/replace/TestExcelReplace类中,请根据实际情况,调整读取和保存Excel的路径后,直接运行即可;

    最新代码下载地址不变,先到这里,抽空再优化……

     

    于2015-01-24补充

    前段时间,在之前代码的基础上,增加了种读取Excel模版导出的方式。今天,抽空改了改说明,具体如下:

    1)在poi/src/replace包中,新增上次补充里POI读取Excel模版的ReplaceExcelServlet.java,供web页面使用;

    2)在poi/src/template包中,增加了种读取Excel模版导出的方式,其对应的模版为poi/WebContent/docs/template.xls。请根据实际情况,调整读取和保存Excel的路径后,直接运行TestTemplate.java即可。TemplateServlet.java则对应web页面使用;

    最新代码下载地址不变……

     

    于2015-01-31补充

    昨晚,在之前代码的基础上,加上本文中可直接运行导出Excel的代码。具体如下:

    1)在poi/src/testExport包中,TestExportExcel.java,链接地址:https://github.com/T5750/poi/blob/master/src/testExport/TestExportExcel.java

    最新代码下载地址不变……

     

    于2015-02-10补充

    在之前代码的基础上,加上可以通过POI导出Excel2007的例子。具体如下:

    1)在poi/src/testExport包中,TestExportExcel2007.java,链接地址:https://github.com/T5750/poi/blob/master/src/testExport/TestExportExcel2007.java

     

    于2015-02-12补充

    今天,在之前代码的基础上,抽空改了改代码。具体如下:

    1)在poi/src/testExport包中,新增Excel2007Servlet.java。以及,修改相关配置;

    2)在poi/src/testExport包中,对导出Excel文件进行重命名,便于查看;

    3)更新该poi例子对应的帮助文档。

     

    于2019-07-23补充

    Servlet -> Spring Boot

    相关文章&官方文档&源代码下载地址:

    Java POI读取Office Excel (2003,2007)及相关jar包 Spring Boot

    最新官方文档:https://poi.apache.org/apidocs/index.html

    源代码下载地址:http://download.csdn.net/detail/evangel_z/7834173
    最新代码下载地址:https://github.com/T5750/poi

    展开全文
  • java导出excel

    2018-10-16 14:38:07
    该代码主要是一个利用java导出excel的实例,适合于java开发的初学者
  • java导出Excel

    2017-07-20 10:08:28
    java导出Excel的demo
  • Java 导出excel

    2014-04-09 17:01:50
    Java 导出excel
  • java Swing 读取xml并导出Excel java Swing 读取xml并导出Excel
  • java导入导出excel操作(jxl) Java解释Excel数据jxl.jar包的使用 关键字: java excel jxl.jar jxl.jar 包 下载地址: /jexcelapi/ 真实下载地址: /jexcelapi/download.html 网站上对它的特征有如下描述 支持Excel
  • JAVA导出Excel

    2016-06-02 17:59:54
    JAVA导出Excel,用于自己收藏记录!JAVA导出Excel,用于自己收藏记录!
  • java 导出excel

    2013-11-06 14:04:16
    java导出excel分享给大家,希望能帮助大家。
  • 导出excel文件Java代码
  • Java导出excel

    2016-05-02 10:42:31
    本案例是一个用Java导出excel的demo例子,可以导入eclipse里面直接运行
  • Java 导出 excel

    2014-05-22 16:22:05
    一个代码实现简单,思路清晰,易懂的完美 导出excel 表格

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,000
精华内容 20,000
关键字:

导出exceljava

java 订阅