如何将数据导出为EXCEL格式
作者:fwgforce
[本文章原创,如需转载,请注明作者和链接]
第一步:我们先设置一下自己的EXCEL将要导出的样式,这可以是一个公有的方法:
public void designTableStyle(HSSFSheet sheet, HSSFWorkbook workbook,String[] headers) { //设置表格默认列宽度为15个字节 sheet.setDefaultColumnWidth((short) 20); // 生成一个样式 // 设置这些样式 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); 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); } }
下面是我的一个ACTION类里面执行导出的方法:返回到前台的是一个流,然后弹出提示保存.注意紫色的地方
@Scope("prototype") @Service("dataExportAction") public class DataExportAction { private InputStream excelStream; private String shtName = ""; public String buildingExport() { //要导出的数据 List<Building> list = buildingService.getBuildAll(); String[] headers = { "楼宇名称", "楼宇地址", "楼宇开发商", "楼宇占地面积(㎡)", "建筑面积(㎡)", "楼层数量", "楼层面积", "房间总数", "房内净高", "竣工时间", "经营单位(1)", "经营单位(2)", "经营单位(3)", "入住时间", "楼宇类型 二级", "物业公司", "物业等级", "建筑总高", "车位个数", "空调设置", "电梯数", "所属街道", "周边设施", "交通状况", "招商方向", "可招商面积(㎡)", "待招商面积(㎡)", "合作方式", "入住主要行业", "入驻企业数", "租金", "物业费", "联系人", "联系电话", "闲置面积", "备注", "楼宇产权", "楼宇分类", "楼宇等级", "楼宇排序号" }; try { shtName = getFileName("楼宇信息表");//必须给它配一个get(),set(),方法,方便调用 ByteArrayOutputStream out = new ByteArrayOutputStream(); // 声明一个工作薄 HSSFWorkbook workbook = new HSSFWorkbook(); // 生成一个表格 HSSFSheet sheet = workbook.createSheet("楼宇信息表"); // 生成一个样式 designTableStyle(sheet, workbook, headers); //开始往EXCEL里写数据,循环你要的数据,每行每行的往里面插入 for (int i = 0; i < list.size(); i++) { HSSFRow row2 = sheet.createRow(i + 1); Object object = list.get(i); if (headers.length == 1) { if (null != object) { for (int j = 0; j < headers.length; j++) { if (null != object) { //处理日期格式 if (object instanceof Date) { Date date = (Date) object; SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd"); object = sdf.format(date); } HSSFCell createCell = row2.createCell(j); createCell.setCellValue(object.toString()); } } } } else if (headers.length > 1) { if (null != object) { Object[] objs = (Object[]) (object); for (int j = 0; j < headers.length; j++) { if (null != objs[j]) { //处理日期格式 if (objs[j] instanceof Date) { Date date = (Date) objs[j]; SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd"); objs[j] = sdf.format(date); } HSSFCell createCell = row2.createCell(j); createCell.setCellValue(objs[j].toString()); } } } } } workbook.write(out); byte[] byteArray = out.toByteArray(); excelStream = new ByteArrayInputStream(byteArray); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } return Action.SUCCESS; } public void setShtName(String shtName) { this.shtName = shtName; } public InputStream getExcelStream() { return excelStream; } public void setExcelStream(InputStream excelStream) { this.excelStream = excelStream; } }
然后配置文件如下:
<!-- 楼宇信息表数据导出 --> <action name="buildingExport" class="dataExportAction" method="buildingExport" > <!-- 失败跳转的页面,根据需要自定义的 --> <result name="error">/data/export_data.jsp</result> <!-- 成功跳转的页面,根据需要自定义的 --> <result name="success" type="stream">/data/export_data.jsp <param name="contentType">application/vnd.ms-excel;charset=UTF-8</param> <param name="inputName">excelStream</param> <param name="contentDisposition">attachment;filename="${shtName}"</param> </result> </action>
上传配置说明:
一,关于struts.xml参数 <struts> <package name="technicalInformationAction" extends="Action"> <default-action-ref name="download"/> <action name="downLoad" class="com.DownLoadAction"> <!--这里的返回值并不是字符串,而是一个流类型--> <result name="success" type="stream"> <param name="contentType">application/octet-stream;charset=ISO8859-1</param> <param name="inputName">inputStream</param> <!--这里需要将文件名进行转码,转码后将值赋予downloadFileName,对应文中的getDownloadFileName()--> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param name="bufferSize">4096</param> </result> </action> </package> </struts> 1、contentDisposition:文件下载的处理方式:包括内联(inline)和附件(attachment),附件方式会弹出保存文件的对话框,否则浏览器会尝试直接显示文件。一般默认值为attachment;filename="${fileName}",其中,filename表示使用经过转码的文件名作为下载文件名,""号中间既可以直接加文件名,又可以将调用该Action中的getFileName方法。{}内,一定要去掉get并把第一个大写字母变小写。 困扰1:乱码问题。 如果要下载的文件包含中文字符,会导致下载下来的文件名称变成乱码,或者干脆出现“InternetExplore无法打开该站点”错误。 2、contentType:下载文件的文件类型,和互联网MIME标准钟的规定类型一致,application/octet-stream 表示无限制。其他类型见附言。 3、inputName:下载文件的来源流,通常就是“流对象名”,对应着action类中某个InputStream类型的属性名,例如:取值为inputStream的属性需要编写getInputStream()方法。一旦xml文件读到inputStream,它就会自动去找Action中的getInputStream方法。 4、bufferSize表示下载缓冲区的大小。 二,action类的编写 import java.io.InputStream; import org.apache.struts2.ServletActionContext; public class DownloadAction { private String fileName; public void setFileName(String fileName) { this.fileName = fileName; } public InputStream getInputStream() { return ServletActionContext.getServletContext().getResourceAsStream("/" + fileName); } public String execute(){ return "success"; } } 需要注意的就是使用getResourceAsStream方法时,文件路径必须是以“/”开头,且是相对路径。这个路径是相对于项目根目录(WEB-INFO下)的。 可以用return new FileInputStream(fileName)的方法来得到绝对路径的文件。 三,测试 在WEB-INF下随意丢一个test.txt,部署好后进入浏览器,输入tomcat地址/项目路径/download.action?fileName=test.txt即可下载到该文件。 详细请看http://blog.163.com/lizhenming_2008/blog/static/765583332009220115857856/ 附:contentType类型. 'ez' => 'application/andrew-inset', 'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'doc' => 'application/msword', 'bin' => 'application/octet-stream', 'dms' => 'application/octet-stream', 'lha' => 'application/octet-stream', 'lzh' => 'application/octet-stream', 'exe' => 'application/octet-stream', 'class' => 'application/octet-stream', 'so' => 'application/octet-stream', 'dll' => 'application/octet-stream', 'oda' => 'application/oda', 'pdf' => 'application/pdf', 'ai' => 'application/postscript', 'eps' => 'application/postscript', 'ps' => 'application/postscript', 'smi' => 'application/smil', 'smil' => 'application/smil', 'mif' => 'application/vnd.mif', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'wbxml' => 'application/vnd.wap.wbxml', 'wmlc' => 'application/vnd.wap.wmlc', 'wmlsc' => 'application/vnd.wap.wmlscriptc', 'bcpio' => 'application/x-bcpio', 'vcd' => 'application/x-cdlink', 'pgn' => 'application/x-chess-pgn', 'cpio' => 'application/x-cpio', 'csh' => 'application/x-csh', 'dcr' => 'application/x-director', 'dir' => 'application/x-director', 'dxr' => 'application/x-director', 'dvi' => 'application/x-dvi', 'spl' => 'application/x-futuresplash', 'gtar' => 'application/x-gtar', 'hdf' => 'application/x-hdf', 'js' => 'application/x-javas cript', 'skp' => 'application/x-koan', 'skd' => 'application/x-koan', 'skt' => 'application/x-koan', 'skm' => 'application/x-koan', 'latex' => 'application/x-latex', 'nc' => 'application/x-netcdf', 'cdf' => 'application/x-netcdf', 'sh' => 'application/x-sh', 'shar' => 'application/x-shar', 'swf' => 'application/x-shockwave-flash', 'sit' => 'application/x-stuffit', 'sv4cpio' => 'application/x-sv4cpio', 'sv4crc' => 'application/x-sv4crc', 'tar' => 'application/x-tar', 'tcl' => 'application/x-tcl', 'tex' => 'application/x-tex', 'texinfo' => 'application/x-texinfo', 'texi' => 'application/x-texinfo', 't' => 'application/x-troff', 'tr' => 'application/x-troff', 'roff' => 'application/x-troff', 'man' => 'application/x-troff-man', 'me' => 'application/x-troff-me', 'ms' => 'application/x-troff-ms', 'ustar' => 'application/x-ustar', 'src' => 'application/x-wais-source', 'xhtml' => 'application/xhtml+xml', 'xht' => 'application/xhtml+xml', 'zip' => 'application/zip', 'au' => 'audio/basic', 'snd' => 'audio/basic', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'kar' => 'audio/midi', 'mpga' => 'audio/mpeg', 'mp2' => 'audio/mpeg', 'mp3' => 'audio/mpeg', 'aif' => 'audio/x-aiff', 'aiff' => 'audio/x-aiff', 'aifc' => 'audio/x-aiff', 'm3u' => 'audio/x-mpegurl', 'ram' => 'audio/x-pn-realaudio', 'rm' => 'audio/x-pn-realaudio', 'rpm' => 'audio/x-pn-realaudio-plugin', 'ra' => 'audio/x-realaudio', 'wav' => 'audio/x-wav', 'pdb' => 'chemical/x-pdb', 'xyz' => 'chemical/x-xyz', 'bmp' => 'image/bmp', 'gif' => 'image/gif', 'ief' => 'image/ief', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'jpe' => 'image/jpeg', 'png' => 'image/png', 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'djvu' => 'image/vnd.djvu', 'djv' => 'image/vnd.djvu', 'wbmp' => 'image/vnd.wap.wbmp', 'ras' => 'image/x-cmu-raster', 'pnm' => 'image/x-portable-anymap', 'pbm' => 'image/x-portable-bitmap', 'pgm' => 'image/x-portable-graymap', 'ppm' => 'image/x-portable-pixmap', 'rgb' => 'image/x-rgb', 'xbm' => 'image/x-xbitmap', 'xpm' => 'image/x-xpixmap', 'xwd' => 'image/x-xwindowdump', 'igs' => 'model/iges', 'iges' => 'model/iges', 'msh' => 'model/mesh', 'mesh' => 'model/mesh', 'silo' => 'model/mesh', 'wrl' => 'model/vrml', 'vrml' => 'model/vrml', 'css' => 'text/css', 'html' => 'text/html', 'htm' => 'text/html', 'asc' => 'text/plain', 'txt' => 'text/plain', 'rtx' => 'text/richtext', 'rtf' => 'text/rtf', 'sgml' => 'text/sgml', 'sgm' => 'text/sgml', 'tsv' => 'text/tab-separated-values', 'wml' => 'text/vnd.wap.wml', 'wmls' => 'text/vnd.wap.wmlscript', 'etx' => 'text/x-setext', 'xsl' => 'text/xml', 'xml' => 'text/xml', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpe' => 'video/mpeg', 'qt' => 'video/quicktime', 'mov' => 'video/quicktime', 'mxu' => 'video/vnd.mpegurl', 'avi' => 'video/x-msvideo', 'movie' => 'video/x-sgi-movie', 'ice' => 'x-conference/x-cooltalk'
本文配备部分导出说明和JAR包下载!有什么不明白的可以在线联系或加QQ:745270812一起探讨下,鄙人新手.
相关推荐
### C#将数据导出为Excel格式的知识点详解 #### 一、导出到Excel的基本原理与步骤 在本示例中,我们主要探讨如何使用C#编程语言将数据导出为Excel格式。该示例提供了较为完整的实现过程,包括用户界面交互、Excel...
《易语言高级表格快速导出EXCEL》是一个关于如何在易语言编程环境中高效地将数据导出为Excel格式的教程。易语言是中国本土开发的一种面向对象的、易学易用的编程语言,它旨在降低编程的难度,让更多人能够参与到程序...
在Java开发中,将数据导出到Excel是一种常见的需求,特别是在数据分析、报表生成或数据交换等场景下。Excel因其易用性和丰富的格式设置能力,成为处理结构化数据的理想选择。本篇文章将深入探讨如何利用Java实现这一...
点击“Finish”,Myeclipse会将数据导出为Excel格式。 5. **Excel的用途** Excel是一种广泛使用的电子表格程序,对于数据的整理、计算、图表制作等功能非常强大。将数据库中的数据导出到Excel后,你可以进行更深入...
在IT行业中,前端数据处理和展示是至关重要的,特别是在企业级应用中,用户往往需要将大量数据导出为便于分析的格式,如Excel。本文将详细介绍如何在基于EasyUI的前端框架下实现数据导出为Excel的功能。 EasyUI是一...
本文将基于给定的文件信息,深入探讨C#中将数据导出到Excel的几种方法,包括在ASP.NET环境中导出Excel的具体步骤。 #### ASP.NET中导出Excel的方法概览 在ASP.NET中导出数据到Excel主要分为两种基本策略:一是将...
原文为《Qt中将QTableView中的数据导出为Excel文件>>,地址http://blog.csdn.net/superjoel/article/details/5321404,资源比较难下载,我下载好帮作者上传下。实例可用,简单易懂,对于QTableView导出为excel...
为了将这些数据导出到Excel,我们需要在KEIL中设置数据导出选项。通常,KEIL可以通过仿真器或调试器的内存查看器来查看和复制内存数据。在内存窗口中选择要导出的数据范围,然后通过复制(Ctrl+C)将数据粘贴到Excel...
在IT行业中,Web应用经常需要提供数据导出功能,尤其是将数据导出为Excel格式,以便用户进行数据分析或存储。本篇文章将详细讲解如何利用ASP.NET与Ajax技术实现在Web应用中导出Excel文件。 首先,ASP.NET是...
在实际工作中,我们经常需要将这些展示的数据导出到Excel文件,以便进行进一步的分析或存储。下面将详细介绍两种有效的方法来实现EasyUI Datagrid数据导出到Excel的功能,并结合提供的文件名来推测具体实现步骤。 *...
标题中的“PB数据窗口导出Excel”指的是在PowerBuilder(PB)环境中,使用数据窗口对象将数据导出到Microsoft Excel格式的过程。数据窗口是PowerBuilder中的一个重要组件,它用于显示和操作数据库中的数据,提供了...
数据导出到Excel.html ,数据导出到Excel.html
本篇我们将探讨如何利用Qt将SQLite数据库中的数据导出到Excel格式,这是一个实用的功能,尤其对于需要数据分析和报告的项目。 首先,让我们理解这个过程的基本步骤: 1. **连接SQLite数据库**:使用`QSqlDatabase`...
数据导出是指将数据库数据导出到其他文件格式的过程。在上面的代码中,我们使用了Response流将数据库数据导出到Excel文件中。数据导出功能广泛应用于各种软件系统中,例如报表生成、数据分析等。 本文介绍了如何...
- SQL Developer:Oracle的免费数据库管理工具,提供数据导出功能,包括直接导出为Excel格式。 - TOAD:商业数据库管理工具,支持更高级的数据导出选项,包括直接生成Excel报告。 5. **安全性与最佳实践** - 当...
在C#编程中,我们经常需要将数据导出为Excel格式以便用户进行分析或进一步处理。在.NET框架中,虽然可以使用Microsoft.Office.Interop.Excel库来实现这个功能,但这种方法需要安装Office环境,且运行时效率较低。...
在IT行业中,将数据导出为Excel文件是一种常见的需求,特别是在数据分析、报表生成以及数据交换等场景中。这里,我们关注的是如何利用Struts2框架将数据转化为Excel格式。Struts2是一个流行的Java web开发框架,它...
接下来,要将数据库中的数据导出为Excel文件,我们可以使用`xlsx`或` SheetJS `库。`xlsx`库是一个强大的工具,能够读取、写入多种电子表格格式,包括XLS、XLSX和CSV等。在`excel.js`文件中,开发者可能定义了函数,...
例如,Google Sheets API支持直接将数据导出为Excel格式。 5. **Excel模板**: 创建预设格式和计算的Excel模板可以提高效率,尤其是在需要多次生成相同格式报告的情况下。开发者可以通过编程控制填充模板,自动化...