`

第三方--导出excel工具类, 支持中文名称

 
阅读更多
package ;


import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.*;
import org.apache.struts2.ServletActionContext;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

/**
 * excel 导出工具
 * @author 
 *
 */
public class ClassifyExcelModel {
    /**
     * todo
     * @param list xx
     * @param response xx
     */
    public void export(List list, HttpServletResponse response) {
        try {
            HSSFWorkbook workbook = exportExcel(list);
            if (workbook != null) {
                //this.printExcel(workbook, response, java.net.URLEncoder.encode("我的客户.xls", "UTF-8"));
                this.printExcel(workbook, response, "分类客户模板.xls");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * to do
     * @param list xx
     * @return xx
     * @throws Exception e
     */
     public HSSFWorkbook exportExcel(List list) throws Exception {
        HSSFWorkbook workbook = null;
        try {
            // 创建工作簿实例
            workbook = new HSSFWorkbook();
            // 这里的数据即时你要从后台取得的数据
            this.fileData(list, workbook, "模板", 0);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return workbook;

    }
    /**
     * todo 
     * @param workbook xx
     * @param response xx
     * @param filename xx
     * @throws IOException xx
     */
    private void printExcel(HSSFWorkbook workbook, HttpServletResponse response, String filename) throws IOException {
        OutputStream out = response.getOutputStream();
        try {
            response.reset();
            response.resetBuffer();
            
            response.setContentType("application/x-download");
		    String userAgent = ServletActionContext.getRequest().getHeader("User-Agent");
		     if (userAgent.indexOf("MSIE") != -1) { 
		    	 response.addHeader("Content-Disposition", "attachment;filename=" + new String( filename.getBytes("GB2312"), "ISO8859-1" ));
		     } else if (userAgent.indexOf("Mozilla") != 1) {
		    	 response.addHeader("Content-Disposition", "attachment;filename=" + new String( filename.getBytes("UTF-8"), "ISO8859-1" ));
		     }            
            //filename = new String(filename.getBytes("iso-8859-1"),"");
            //filename = new String(filename.getBytes("utf-8"),"iso-8859-1");
            //filename = java.net.URLDecoder.decode(filename, "utf-8");
            //response.setContentType("application/msexcel;charset=UTF-8");
            //response.setHeader("Content-disposition", "attachment; filename=" + filename);
            
            workbook.write(out);
        } catch (IOException e) {
            e.printStackTrace();

        } finally {
            out.flush();
            out.close();
            response.flushBuffer();
        }

    }
    /**
     * sdf
     * @param dataList xx
     * @param workbook xx
     * @param sheetName xx
     * @param count xx
     */
    private void fileData(List dataList, HSSFWorkbook workbook, String sheetName, int count) {
        // 创建工作表实例
        HSSFSheet sheet = workbook.createSheet(sheetName);
        workbook.setSheetName(count, sheetName);
        // 设置列宽

        this.setSheetColumnWidth(sheet);
        // 获取样式
        HSSFCellStyle style = this.createTitleStyle(workbook);
        HSSFCellStyle style1 = this.createTitleStyle1(workbook);
        
        // 创建第一行标题,标题名字的本地信息通过resources从资源文件中获取
        HSSFRow row = sheet.createRow((short) 0);// 建立新行
        //this.createCell(row, 0, style1, HSSFCell.CELL_TYPE_STRING, "公司ID");
        this.createCell(row, 0, style1, HSSFCell.CELL_TYPE_STRING, "客户名称");
        this.createCell(row, 1, style1, HSSFCell.CELL_TYPE_STRING,"隶属分类");
        this.createCell(row, 2, style1, HSSFCell.CELL_TYPE_STRING,"城市");
        this.createCell(row, 3, style1, HSSFCell.CELL_TYPE_STRING,"数据状态");
        this.createCell(row, 4, style1, HSSFCell.CELL_TYPE_STRING,"数据来源");
        this.createCell(row, 5, style1, HSSFCell.CELL_TYPE_STRING,"创建时间");
        
        //自定义属性
        for (int i = 0; i < dataList.size(); i++){
        	ClassifyHoldProperty cp = (ClassifyHoldProperty)dataList.get(i);	
        	Propertymate pt = cp.getPropertymate();
			if (pt != null) {
				String propName = cp.getPropertymate().getPropertyName();
				this.createCell(row, (6+i), style1, HSSFCell.CELL_TYPE_STRING, propName);
			}            	
        }

    
    }
    /**
     * to do
     * @param sheet xx
     */
    private void setSheetColumnWidth(HSSFSheet sheet) {
        // 根据你数据里面的记录有多少列,就设置多少列
        sheet.setColumnWidth((short) 0, (short) 5000);
        sheet.setColumnWidth((short) 1, (short) 8000);
        sheet.setColumnWidth((short) 2, (short) 5000);
        sheet.setColumnWidth((short) 3, (short) 10000);
        sheet.setColumnWidth((short) 4, (short) 8000);
    }
    
    /**
     * to do
     * @param wb xx
     * @return xx
     */
    //设置第一行标题的样式
    private HSSFCellStyle createTitleStyle1(HSSFWorkbook wb) {
        HSSFFont boldFont = wb.createFont();
        boldFont.setFontHeight((short) 240);
        HSSFCellStyle style = wb.createCellStyle();
        style.setFont(boldFont);
//        style.setDataFormat(HSSFDataFormat.getBuiltinFormat("###,##0.00"));
        style.setDataFormat(HSSFDataFormat.getBuiltinFormat("G/通用格式"));
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        //设置字体居中
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        return style;
    }

    // 设置excel的title样式
    /**
     * xx 
     * @param wb xx
     * @return xx
     */
    private HSSFCellStyle createTitleStyle(HSSFWorkbook wb) {
        HSSFFont boldFont = wb.createFont();
        boldFont.setFontHeight((short) 240);
        HSSFCellStyle style = wb.createCellStyle();
        style.setFont(boldFont);
        style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        return style;
    }
     /**
      * xx
      * @param row xx
      * @param column xx
      * @param style xx
      * @param cellType xx
      * @param value xx
      */
    // 创建Excel单元格
    private void createCell(HSSFRow row, int column, HSSFCellStyle style,
                            int cellType, Object value) {
        HSSFCell cell = row.createCell((short) column);
        cell.setCellType(HSSFCell.ENCODING_UTF_16);
        if (style != null) {
            cell.setCellStyle(style);
        }
        switch (cellType) {
            case HSSFCell.CELL_TYPE_BLANK: 
            break;
            case HSSFCell.CELL_TYPE_STRING: 
                if (value != null) {
                    cell.setCellValue(new HSSFRichTextString(value.toString()));
                } else {
                	cell.setCellValue(new HSSFRichTextString(""));
                }
            
            break;
            case HSSFCell.CELL_TYPE_NUMERIC:
                cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
                // DecimalFormat format = new DecimalFormat("###,##0.00");
                // cell.setCellValue(Float.parseFloat(value.toString()));
                cell.setCellValue(Double.parseDouble(value.toString()));
            
            break;
            default:
                break;
        }
    }
}

 

window.open('/xxAction?method=exportExcel&index='+uuid); 

 

        HttpServletResponse response = ServletActionContext.getResponse();
        ExportExcel exportExcel = new ExportExcel();
        exportExcel.export(list,response); 

 

 

 

分享到:
评论

相关推荐

    使用ITEXT导出EXCEL工具类

    8. **转换为Excel**: 为了将PDF转换为Excel,可以使用第三方库如Apache POI或Apache PDFBox。这些库提供API将PDF解析为可操作的表格数据。 9. **创建工具类**: 将以上代码封装成一个工具类,接受必要的参数(如数据...

    C#通用Excel导入导出工具类

    2. **读取Excel**:使用第三方库如EPPlus或NPOI来读取Excel文件,获取工作表数据。这些库提供了方便的API,可以轻松访问单元格内容。 3. **反射和特性解析**:遍历Model类,通过反射获取所有属性及其特性。解析特性...

    Java对Excel数据导入导出工具类(含Exel单元格样式设置)

    - Java通过第三方库如Apache POI或jxl与Excel文件进行交互。在这个案例中,我们使用的是jxl库,这是一个轻量级的库,适用于Java平台,支持读取和写入Excel 97-2003格式的文件。 2. **jxl库介绍**: - jxl库提供了...

    excel导出工具类

    excel的操作,在开发中是经常遇到的问题,也是程序员比较费心思的开发问题,虽然现在有jxl,poi等第三方开发组件的支持,对excel的操作变的简单了很多,但是大多数都不通用,在此提供一个excel导出工具,内含源码,...

    myxls三方控件(利用第三方控件导出数据到Excel中)

    在ASP.NET框架下,使用内置的功能来实现复杂的数据导出可能较为繁琐,这时第三方控件就显得尤为重要。"myxls"是一个这样的控件,它专门用于帮助开发者方便地将数据导出到Excel中。 myxls控件是一个高效且功能强大的...

    自己DIY java导出Excel

    总结来说,Java导出Excel涉及的关键技术点包括对Excel文件格式的理解,使用Java标准API或第三方库(如Apache POI)操作Excel对象,以及数据处理和格式化。通过阅读提供的博客和源代码,开发者可以学习如何在不依赖...

    GridView导出Excel DataTable导出Excel 实例源码

    - 创建Excel工作簿:使用第三方库如EPPlus,它可以方便地操作Excel文件。 - 将DataTable写入工作簿:通过遍历DataTable的行和列,将数据写入Excel工作簿的特定单元格。 - 保存和下载:将工作簿保存为临时文件,...

    连接数据库导出excel

    而是使用第三方库或者API来创建Excel文件。这通常涉及到像NPOI这样的开源库,它允许开发者在没有安装Office的情况下创建、修改和读取Excel文件。 4. **NPOI库**:NPOI是.NET平台上的一个开源项目,用于处理...

    delphi表格数据导出到excel的控件

    控件名称"ExcelExport3.5"可能指的是一个特定版本的第三方库,它提供了对Delphi7的支持。Delphi7是一款历史悠久但仍然活跃的集成开发环境(IDE),许多企业仍基于它构建应用程序。因此,这个控件对于那些需要在老...

    导出excel-兼容2007

    "lib"是Java项目中存放第三方库的标准位置。确保你已经下载了Apache POI的相关依赖,包括poi、poi-ooxml、poi-ooxml-schemas等,这些都会包含在你的"lib"目录下。 下面是一个简单的使用Apache POI创建Excel文件的...

    php导出excel表格类

    首先,PHP本身并不支持直接生成Excel文件,但可以通过一些第三方库来实现。其中最常用的是PHPExcel库,它提供了丰富的API接口,可以方便地创建、读取和修改Excel文件。另一个流行的选项是SimpleXLSX,它更适合简单的...

    easypoi的使用demo,包含Excel模板导出,html导出Excel,Excel导出pdf等

    虽然Apache POI本身并不直接支持Excel到PDF的转换,但Easy POI通过引入第三方库如 Flying Saucer 或 Apache FOP 实现了这一功能。首先,你需要将Excel文件读取为一个工作簿对象,然后利用PDF生成器,将每个工作表...

    从VS2010导出Excel类的方法

    第二种方法是使用第三方库,如NPOI。NPOI是一个开源的.NET库,用于读写Microsoft Office格式的文件,包括Excel。这种方法不需要安装Office,因此在服务器环境或者不支持COM交互的场景下更有优势。使用NPOI,你可以...

    导出excel.rar

    在C#中处理Excel文件,通常我们会利用.NET Framework或.NET Core提供的类库,如`System.IO.Packaging`(用于Open XML格式)或者第三方库如NPOI、EPPlus等。这些库允许开发者创建、读取、修改Excel工作簿,并执行复杂...

    一款很有用的Excel读写工具类

    Excel提供了COM接口,使得第三方程序可以控制Excel对象,如工作簿、工作表和单元格,从而实现读写功能。 至于具体的代码实现,压缩包中的“Excel读写工具类”文件很可能是源代码或者头文件,包含了工具类的定义和...

    利用com组件导出excel方法

    - 如果需要处理大量数据或进行复杂的数据操作,建议考虑使用其他更为高效的方式,如EPPlus等第三方库。 - 为了提高安全性,应避免在生产环境中直接使用COM组件操作Excel,可以通过API或其他方式间接完成数据导出任务...

    基于类注解将对象数据导出到excel

    总结来说,这个主题涵盖了Java编程、注解的使用、对象与数据结构的映射,以及使用第三方库处理Excel文件的技巧。对于Java开发者尤其是需要处理数据导出需求的人来说,这是一个非常实用的技术点。

    输入sql语句导出excel

    在.NET中,可以使用第三方库如EPPlus,它允许我们创建Excel工作簿并填充数据。首先,需要安装EPPlus库(例如,通过NuGet包管理器),然后创建一个ExcelPackage对象,并将数据写入工作表: ```csharp using ...

    帆软报表导出各种格式(excel/word/pdf等)

    这两个jar文件包含了帆软报表引擎的核心组件和第三方依赖,它们是实现报表格式转换的关键。在实际操作中,我们需要将这些库加入到项目的类路径中,确保系统能够正确识别并执行报表导出的指令。 datasource.xml文件...

Global site tag (gtag.js) - Google Analytics