1.调用类如下:
@RequestMapping("/exportExcel4ServiceFee") public void exportExcel4ServiceFee(LoanSplitModel loanSplitModel,HttpServletRequest request, HttpServletResponse response) { try { PageView<LoanSplitModel> pageView = collectionService.downPageView4RemindersServiceFee(loanSplitModel); String[] titles = new String[]{"序号","合同编号","客户姓名","合同金额"}; SXXExcel excel = new SXXExcel(titles); StringBuffer sb = null; int count = 1; for (LoanSplitModel item : pageView.getRecords()) { sb = new StringBuffer(); sb = sb.append(count++).append(",")//序号 .append(item.getContractCode() != null ? item.getContractCode() : "").append(",")//合同编号 .append(item.getCustomerName() != null ? item.getCustomerName() : "").append(",")//客户姓名 .append(item.getContractMoney() != null ? df.format(item.getContractMoney()) : "").append(",");//合同金额 excel.addSXSSFRow(sb.toString().split(",")); } excel.outSXSSFFile(response, "催收服务费统计表.xlsx"); } catch (Exception e) { e.printStackTrace(); logger.error("-----------催收服务费统计列表导出excel异常", e); } }
SXXExcel类如下:
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.math.BigDecimal; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.regex.Pattern; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDataFormat; 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.ss.util.CellRangeAddress; 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; public class SXXExcel { private static SXSSFWorkbook workbook; private static CellStyle titleStyle; // 标题行样式 private static Font titleFont; // 标题行字体 private static CellStyle dateStyle; // 日期行样式 private static Font dateFont; // 日期行字体 private static CellStyle headStyle; // 表头行样式 private static Font headFont; // 表头行字体 private static CellStyle contentStyle; // 内容行样式 private static Font contentFont; // 内容行字体 private static CellStyle doubleContextStyle; /** * @Description: 初始化 */ private static void init() { workbook = new SXSSFWorkbook(1000); titleFont = workbook.createFont(); titleStyle = workbook.createCellStyle(); dateStyle = workbook.createCellStyle(); dateFont = workbook.createFont(); headStyle = workbook.createCellStyle(); headFont = workbook.createFont(); contentStyle = workbook.createCellStyle(); contentFont = workbook.createFont(); doubleContextStyle= workbook.createCellStyle(); initTitleCellStyle(); initTitleFont(); initDateCellStyle(); initDateFont(); initHeadCellStyle(); initHeadFont(); initContentCellStyle(); initContentFont(); initDoubleContextStyle(); } /** * @Description: 初始化标题行样式 */ private static void initTitleCellStyle() { titleStyle.setAlignment(CellStyle.ALIGN_CENTER); titleStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); titleStyle.setFont(titleFont); titleStyle.setFillBackgroundColor(IndexedColors.YELLOW.getIndex()); } /** * @Description: 初始化日期行样式 */ private static void initDateCellStyle() { dateStyle.setAlignment(CellStyle.ALIGN_CENTER_SELECTION); dateStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); dateStyle.setFont(dateFont); dateStyle.setFillBackgroundColor(IndexedColors.SKY_BLUE.getIndex()); } /** * @Description: 初始化表头行样式 */ private static void initHeadCellStyle() { headStyle.setAlignment(CellStyle.ALIGN_CENTER); headStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); headStyle.setFont(headFont); headStyle.setFillBackgroundColor(IndexedColors.YELLOW.getIndex()); headStyle.setBorderTop(CellStyle.BORDER_MEDIUM); headStyle.setBorderBottom(CellStyle.BORDER_THIN); headStyle.setBorderLeft(CellStyle.BORDER_THIN); headStyle.setBorderRight(CellStyle.BORDER_THIN); headStyle.setTopBorderColor(IndexedColors.BLUE.getIndex()); headStyle.setBottomBorderColor(IndexedColors.BLUE.getIndex()); headStyle.setLeftBorderColor(IndexedColors.BLUE.getIndex()); headStyle.setRightBorderColor(IndexedColors.BLUE.getIndex()); } /** * @Description: 初始化内容行样式 */ private static void initContentCellStyle() { contentStyle.setAlignment(CellStyle.ALIGN_CENTER); contentStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); contentStyle.setFont(contentFont); contentStyle.setBorderTop(CellStyle.BORDER_THIN); contentStyle.setBorderBottom(CellStyle.BORDER_THIN); contentStyle.setBorderLeft(CellStyle.BORDER_THIN); contentStyle.setBorderRight(CellStyle.BORDER_THIN); contentStyle.setTopBorderColor(IndexedColors.BLUE.getIndex()); contentStyle.setBottomBorderColor(IndexedColors.BLUE.getIndex()); contentStyle.setLeftBorderColor(IndexedColors.BLUE.getIndex()); contentStyle.setRightBorderColor(IndexedColors.BLUE.getIndex()); contentStyle.setWrapText(true); // 字段换行 } private static void initDoubleContextStyle(){ doubleContextStyle.setAlignment(CellStyle.ALIGN_CENTER); doubleContextStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); doubleContextStyle.setFont(contentFont); doubleContextStyle.setBorderTop(CellStyle.BORDER_THIN); doubleContextStyle.setBorderBottom(CellStyle.BORDER_THIN); doubleContextStyle.setBorderLeft(CellStyle.BORDER_THIN); doubleContextStyle.setBorderRight(CellStyle.BORDER_THIN); doubleContextStyle.setTopBorderColor(IndexedColors.BLUE.getIndex()); doubleContextStyle.setBottomBorderColor(IndexedColors.BLUE.getIndex()); doubleContextStyle.setLeftBorderColor(IndexedColors.BLUE.getIndex()); doubleContextStyle.setRightBorderColor(IndexedColors.BLUE.getIndex()); doubleContextStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00")); doubleContextStyle.setWrapText(true); // 字段换行 } /** * @Description: 初始化标题行字体 */ private static void initTitleFont() { titleFont.setFontName("华文楷体"); titleFont.setFontHeightInPoints((short) 20); titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD); titleFont.setCharSet(Font.DEFAULT_CHARSET); titleFont.setColor(IndexedColors.BLUE_GREY.getIndex()); } /** * @Description: 初始化日期行字体 */ private static void initDateFont() { dateFont.setFontName("隶书"); dateFont.setFontHeightInPoints((short) 10); dateFont.setBoldweight(Font.BOLDWEIGHT_BOLD); dateFont.setCharSet(Font.DEFAULT_CHARSET); dateFont.setColor(IndexedColors.BLUE_GREY.getIndex()); } /** * @Description: 初始化表头行字体 */ private static void initHeadFont() { headFont.setFontName("宋体"); headFont.setFontHeightInPoints((short) 10); headFont.setBoldweight(Font.BOLDWEIGHT_BOLD); headFont.setCharSet(Font.DEFAULT_CHARSET); headFont.setColor(IndexedColors.BLUE_GREY.getIndex()); } /** * @Description: 初始化内容行字体 */ private static void initContentFont() { contentFont.setFontName("宋体"); contentFont.setFontHeightInPoints((short) 10); contentFont.setBoldweight(Font.BOLDWEIGHT_NORMAL); contentFont.setCharSet(Font.DEFAULT_CHARSET); contentFont.setColor(IndexedColors.BLUE_GREY.getIndex()); } public SXXExcel(String title, String[] headers){ init(); SXSSFSheet sheet = workbook.createSheet(); SXSSFRow fristRow=sheet.createRow(0); SXSSFCell titleCell =fristRow.createCell(0); titleCell.setCellStyle(titleStyle); titleCell.setCellValue(title); sheet.addMergedRegion(new CellRangeAddress(0,0,0,headers.length-1)); SXSSFRow dateRow=sheet.createRow(1); SXSSFCell dateCell = dateRow.createCell(0); dateCell.setCellStyle(dateStyle); dateCell.setCellValue(new SimpleDateFormat("yyyy-MM-dd") .format(new Date())); sheet.addMergedRegion(new CellRangeAddress(1,1,0,headers.length-1)); SXSSFRow headerRow=sheet.createRow(2); for(int i=0;i<headers.length;i++){ SXSSFCell cell = headerRow.createCell(i); cell.setCellStyle(headStyle); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(headers[i]); } } public SXXExcel(String[] headers){ init(); SXSSFSheet sheet = workbook.createSheet(); SXSSFRow headerRow=sheet.createRow(0); for(int i=0;i<headers.length;i++) { SXSSFCell cell = headerRow.createCell(i); cell.setCellStyle(headStyle); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(headers[i]); } } /** * 往EXCEL追加数据 * @param filePath * @param rows */ public void addSXSSFRow(List<Object[]> rows){ SXSSFSheet sheet = workbook.getSheetAt(0); for(Object[] cells : rows) { SXSSFRow excelRow=sheet.createRow(sheet.getLastRowNum()+1); for(int i=0;i<cells.length;i++) { if(cells[i] instanceof Number) { SXSSFCell cell = excelRow.createCell(i); cell.setCellStyle(contentStyle); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(((Number)cells[i]).doubleValue()); } else { SXSSFCell cell = excelRow.createCell(i); cell.setCellStyle(contentStyle); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(this.toString(cells[i])); } } } } /** * 往EXCEL追加数据 * @param filePath * @param rows */ public void addSXSSFRow(Object[] cells){ SXSSFSheet sheet = workbook.getSheetAt(0); SXSSFRow excelRow=sheet.createRow(sheet.getLastRowNum()+1); Pattern p2=Pattern.compile("^(([1-9]\\d{0,9})|0)(\\.\\d{2})+$"); for(int i=0;i<cells.length;i++) { sheet.setColumnWidth(i, 5900); if(cells[i] instanceof BigDecimal) { SXSSFCell cell = excelRow.createCell(i); cell.setCellStyle(contentStyle); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(((BigDecimal)cells[i]).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()); } else { if(null !=cells[i] && !"".equals(cells[i].toString())){ boolean flag2 = p2.matcher(cells[i].toString()).matches(); if (flag2) { SXSSFCell cell = excelRow.createCell(i); cell.setCellStyle(contentStyle); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(Double.parseDouble(cells[i].toString())); }else { SXSSFCell cell = excelRow.createCell(i); cell.setCellStyle(contentStyle); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(this.toString(cells[i])); } }else { SXSSFCell cell = excelRow.createCell(i); cell.setCellStyle(contentStyle); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(this.toString(cells[i])); } } } } public void outSXSSFFile(String filePath){ FileOutputStream outFile = null; java.io.BufferedOutputStream outStream = null; try { File file = new File(filePath); file.deleteOnExit(); file.createNewFile(); outFile = new FileOutputStream(filePath); outStream = new BufferedOutputStream(outFile); workbook.write(outStream); outStream.flush(); workbook.dispose(); } catch (Exception e) { e.printStackTrace(); }finally{ IOUtils.closeQuietly(outFile); IOUtils.closeQuietly(outStream); } } public void outSXSSFFile(HttpServletResponse response, String filename){ ServletOutputStream outStream = null; try { filename = new String(filename.getBytes("utf-8"),"iso-8859-1"); response.setCharacterEncoding("utf-8"); response.setContentType("multipart/form-data"); response.setHeader("Content-Disposition", "attachment;fileName="+ filename); outStream = response.getOutputStream(); workbook.write(outStream); outStream.flush(); workbook.dispose(); } catch (Exception e) { e.printStackTrace(); }finally{ IOUtils.closeQuietly(outStream); } } private String toString(Object val){ if(val==null) return ""; if(val instanceof String) return (String)val; else if(val instanceof Integer) return String.valueOf(val); else if(val instanceof Long) return String.valueOf(val); else if(val instanceof java.math.BigDecimal){ NumberFormat format=NumberFormat.getNumberInstance() ; format.setMaximumFractionDigits(2); format.setGroupingUsed(false); return format.format(val) ; }else if(val instanceof java.util.Date){ SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); return format.format(val) ; }else{ return val.toString(); } } }
相关推荐
本压缩包文件“unifastreport导出Excel二种方式.rar”主要包含了两种方法将UnifastReport报表导出为Excel格式的详细说明。以下是对这两种方法的详细解释: 1. 使用UnifastReport内置的导出功能: UnifastReport...
**二、使用Map导出Excel** Map是另一种常用的数据结构,它允许以键值对的形式存储数据。使用Map导出Excel的基本流程如下: 1. **创建Map列表**:创建一个List, Object>>,其中Map的键对应列标题,值对应单元格内容...
导出过程与导出Excel类似,只需将导出类型设置为frxExportPdf即可。 在Unigui环境中,FastReport的集成非常顺畅,Unigui提供了丰富的控件和事件来支持FastReport的操作,如在按钮点击事件中触发报表的生成和导出。...
总之,C#提供了多种方式来导出Excel表格,可以根据项目需求和环境选择合适的方法。通过上述代码,你可以根据自己的数据结构创建自定义的Excel文件,不论是xls还是xlsx格式。在实际应用中,还可以进一步完善功能,如...
这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作Excel数据的有效方式。 首先,让我们详细了解一下Apache POI库。POI提供了一个API,允许开发者在Java应用程序...
在标题提到的两种方法中,我们将重点讨论如何利用SheetJS和xlsx-style库来实现更复杂的Excel导出功能,如文字居中、自动换行、列宽设置、单元格合并以及冻结表头。 SheetJS是一个强大的JavaScript库,它允许开发者...
这两种方法各有优缺点:服务器端方法需要服务器有Excel安装,但能直接生成Excel文件;客户端方法无需服务器端支持Excel,但用户必须手动用Excel打开CSV文件。选择哪种方法取决于具体的应用场景和资源限制。
这两种格式在数据共享、报告生成和打印等方面非常常见。 首先,我们来看C#导出Excel的实现。Excel文件通常以`.xlsx`或`.xls`格式存储,C#可以借助Microsoft Office Interop库直接操作Excel对象,但这要求目标机器上...
这两种库都是Java中广泛使用的处理Microsoft Office文件格式的库,特别是Excel。 首先,Apache POI是一个开源项目,它提供了读取和写入Microsoft Office格式文件的能力,包括Excel。POI库的强大之处在于它可以处理...
在导出Excel的场景中,Blob对象用于创建Excel文件的二进制数据流。Blob.js提供了方便的方法来创建、合并和操作Blob,使得开发者能够更灵活地处理这些数据。 "Export2Excel.js"是核心的导出工具,它封装了生成Excel...
双引号在ALV中显示时往往不会出现问题,但当数据被导出到Excel后,由于Excel自身的解析方式,可能将双引号内的内容视作一个整体的字段,从而导致数据窜行。在某些情况下,双引号还可能引起合并单元格的问题,导致本...
二、DataTable导出Excel 1. DataTable概述:DataTable是.NET Framework中的一个类,它代表内存中的数据表,可以用于存储和操作数据,不依赖任何数据库。 2. 导出步骤: - 创建DataTable:根据需要,创建一个...
在导出Excel报表时,我们通常会使用模板方式,这样可以预先设定好报表的样式和布局,然后根据实际数据填充。 1. **模板设计**:首先,我们需要设计一个Excel模板,模板中包含了报表的结构、样式和占位符。这些占位...
**方法二:使用jQuery插件(如Jquery_easyui_datagrid_js导出excel.doc所示)** 文件`Jquery_easyui_datagrid_js导出excel.doc`可能是文档说明或者包含插件使用的示例代码。通常,jQuery插件能简化Datagrid数据导出...
Excel文件有两种主要格式:XLS(Excel 97-2003工作簿)和XLSX(Excel 2007及以后版本的工作簿)。对于XLS格式,Apache POI库中的HSSFWorkBook类是处理此类文件的关键。 首先,让我们深入了解如何导入Excel数据到...
本篇将详细讲解两种常见的导出Excel的方法:普通方式和Ext方式。 首先,让我们从普通方式导出Excel开始。普通方式通常指的是使用服务器端编程语言(如Java、Python、C#等)生成Excel文件,然后将其作为HTTP响应返回...
总结,Excel导出支持前台和后台两种方式,每种都有其适用场景。前台导出适合小数据量和对实时性要求高的情况,而后台导出则适合大数据量和需要保证格式一致性的场景。结合Struts2框架,我们可以轻松地在后台实现高效...
项目内容主要包括两个核心功能:在线编辑Excel和Excel文件导入导出。在线编辑部分,Luckysheet提供了丰富的API和配置选项,可以定制化地创建各种复杂的表格结构,包括单元格样式、行列操作、公式计算等。此外,它的...
本篇文章将详细介绍两种在ASP.NET中导出Excel的方法,主要关注如何从GridView控件导出数据。 1. 存储在服务器并提供下载链接 这种方法首先将导出的Excel文件存储在服务器的特定文件夹下,然后通过HTTP响应将文件...
组态王历史数据导出EXCEL表格的方法 组态王是一种工业自动化软件,具有强大的数据采集和处理能力。为了更好地对历史数据进行分析和处理,需要将其导出到EXCEL表格中。本文将介绍组态王历史数据导出EXCEL表格的方法...