JAVA中EXLS导出功能实现 - 代码

JAVA中EXLS导出功能实现  - 代码:

基于SSH框架下的exls导出

public void exportExl() throws Exception{
        String text = (String) super.getRequest().getParameter("text");
        String flowid="051021";//(String)super.getRequest().getParameter("flowid");

         ResultPage resulta=queryDataService.getexportkey(flowid, text);
         //获取主键属性
         List<String> list=resulta.getExportlist();
         //获取修改属性
         List<String> reviselist=resulta.getExportreviselist();
         //获取属性中文
         List<String>cnlist=resulta.getExportkeycnlist();
         //获取已选择数据
         List datalist=resulta.getList();
         //装载主键信息及数据
         /**
          * 装载的数据类型为List<List<String>>
          */
         List<List<String>> data=new ArrayList();
         for(int i=0;i<datalist.size();i++){
             Map map=(Map)datalist.get(i);
             List<String> datas=new ArrayList();
             for(int n=0;n<list.size();n++){
                 String key=list.get(n);
                 String value=String.valueOf(map.get(key));
                 datas.add(value);
             }
             data.add(datas);
         }
         List<List<String>> revisedata=new ArrayList();
         for(int i=0;i<datalist.size();i++){
             Map map=(Map)datalist.get(i);
             List<String> revise=new ArrayList();
             for(int n=0;n<reviselist.size();n++){
                 String key=reviselist.get(n);
                // System.out.println("key>>>>>>>>>"+key);
                 String value=String.valueOf(map.get(key));
                 revise.add(value);
             }
             revisedata.add(revise);
         }

        HttpServletResponse response=super.getResponse();
        ServletOutputStream out=null;
        response.setContentType("applicatin/vnd.ms-excel");

         HSSFWorkbook workbook = new HSSFWorkbook();//创建Excel文件(Workbook)

         //设置表名
         String classname="基础调整-"+text+"";
         //表名导出中文格式化
         String name=new String(classname.getBytes("gbk"),"iso-8859-1");

         response.setHeader("content-disposition", "attchment;filename="+name+".xls");
         HSSFSheet sheet = workbook.createSheet("基础调整");//创建工作表(Sheet)
         try {
                  //创建表头属性   第一行
                  sheet.setColumnWidth(0, 5120);//设置第i列的宽度是31个字符宽度
                  HSSFRow row = sheet.createRow(0);
                  for(int n=0;n<cnlist.size();n++){
                     String cnkeys=cnlist.get(n);
                     HSSFCellStyle style=workbook.createCellStyle();

                     style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
                     style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
                      HSSFFont font = workbook.createFont();
                        font.setFontName("仿宋");//设置字体名称

                        font.setFontHeightInPoints((short)12);//设置字号
                       font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示

                    style.setFont(font);
                    //列
                    HSSFCell cell = row.createCell(n);

                    cell.setCellValue(cnkeys);
                    cell.setCellStyle(style);
                  }
                  //创建剩下行并添加值
                 for (int i=1;i<data.size()+1;i++){
                    List<String> strings = data.get(i-1);
                    //行
                    row = sheet.createRow(i);
                    sheet.setColumnWidth(i, 5120);//设置第i列的宽度是31个字符宽度
                    //System.out.println("strings>>>>>>>>>"+data.size());
                    //添加主键列数据
                   for (int j=0;j<strings.size();j++){

                       HSSFCellStyle style=workbook.createCellStyle();

                       style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
                       style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
                         HSSFFont font = workbook.createFont();
                            font.setFontName("仿宋");//设置字体名称

                            font.setFontHeightInPoints((short)12);//设置字号
                           font.setColor(HSSFColor.RED.index);//设置字体颜色

                        style.setFont(font);
                        String str= strings.get(j);
                        //列
                        HSSFCell cell = row.createCell(j);

                        cell.setCellValue(str);
                        cell.setCellStyle(style);
                    }
                   //添加可修改属性数据
                   int k=list.size();
                       //System.out.println("revisedata>>>>>>>>>"+revisedata.size());
                       Object obj=JSONArray.fromObject(revisedata);
                       System.out.println("revisedata>>>>>>>>>"+obj.toString());

                         List<String> str= revisedata.get(i-1);
                                for(int w=0;w<str.size();w++){
                                            HSSFCellStyle style=workbook.createCellStyle();
                                               style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
                                               style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
                                            HSSFFont font = workbook.createFont();
                                            font.setFontName("仿宋");//设置字体名称
                                            font.setFontHeightInPoints((short)12);//设置字号
                                            style.setFont(font);
                                        HSSFCell cell = row.createCell(k++);
                                        String value=str.get(w);
                                        cell.setCellValue(value);
                                        cell.setCellStyle(style);
                                }
                         }
               //添加尾部 备注
                 HSSFRow lastrow = sheet.createRow(data.size()+2);
                 HSSFCell cells=lastrow.createCell(0);
                 HSSFCellStyle styles=workbook.createCellStyle();

                   styles.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
                   styles.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
                     HSSFFont font = workbook.createFont();
                        font.setFontName("仿宋");//设置字体名称

                        font.setFontHeightInPoints((short)20);//设置字号
                       font.setColor(HSSFColor.RED.index);//设置字体颜色

                    styles.setFont(font);
                 cells.setCellValue("备注:红色字体区域为不可更改主键。请不要修改,以免发生错误,谢谢!");
                 cells.setCellStyle(styles);
                 CellRangeAddress region=new CellRangeAddress(data.size()+2,data.size()+2, 0, cnlist.size());
                 sheet.addMergedRegion(region);

                out=response.getOutputStream();
                // FileOutputStream out = new FileOutputStream(filePath);
                workbook.write(out);//保存Excel文件
        } catch (IOException e) {
            // TODO: handle exception
            System.out.println("导出失败!");
        }finally{
            try {
                out.flush();
                out.close();//关闭文件流
            } catch (Exception e) {
                // TODO: handle exception
            }

        }

         System.out.println("OK!");

    }

原文地址:https://www.cnblogs.com/ggq94/p/9732674.html

时间: 2024-10-01 03:55:19

JAVA中EXLS导出功能实现 - 代码的相关文章

JAVA中EXLS导入功能实现 - 代码

JAVA中EXLS导入功能实现 - 代码: 基于SSH框架下导入的流程及解析: private File file; public synchronized File getFile() { return file; } public synchronized void setFile(File file) { this.file = file; } /** * 导入exls 并解析 * @throws Exception */ public void inputfile() throws Ex

Java中读取Excel功能实现_POI

这里使用apache的poi进行读取excel 1,新建javaproject 项目:TestExcel 2,导入包 包下载地址:http://poi.apache.org/download.html#POI-3.10-FINAL 百度网盘下载:http://pan.baidu.com/s/1i365mQT 导入根目录下.lib.ooxml-lib下的所有jar 4,操作读取excel import java.io.File; import java.io.IOException; import

Java中Excel导入功能实现、excel导入公共方法_POI -

这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> materialDataImport2(byte[] fileBytes, String fileName) { //return DataImport(fileBytes, fileName, "inv_m"); File file = FileUtils.getFileFromByte

Java中导入导出Excel -- POI技术

一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入.导出Excel 二.使用Jakarta POI导入.导出Excel Jakarta PO

1.JAVA中使用JNI调用C++代码学习笔记

Java 之JNI编程1.什么是JNI? JNI:(Java Natibe Inetrface)缩写. 2.为什么要学习JNI?  Java 是跨平台的语言,但是在有些时候仍然是有需要调用本地代码 (这些代码通常是由C/C++编写的). Sun公司提供的JNI是Java平台的一个功能强大的接口.这个JNI接口提供了Java与操作系统本地代码互相调用的功能.(即java调用C++代码) 最简单的Java调用C/C++代码步骤 1.创建TestNativeCode工程,新建cn.itcast包,新建

java中实现定时功能

网上资料: 我们可以使用Timer和TimerTask类在java中实现定时任务,详细说明如下: 1.基础知识java.util.Timer一种线程设施,用于安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.此类是线程安全的:多个线程可以共享单个 Timer 对象而无需进行外部同步.java.util.TimerTask由 Timer 安排为一次执行或重复执行的任务. 2.示例代码该示例实现这样一个功能,在系统运行期间,每30分钟,系统自动检查连接池中的可用连接数,并输出到日

Java中String.equals()方法的实现代码

java中String类里的String.equals()方法: 源代码: public boolean equals(Object anObject) { //如果是同一个对象 if (this == anObject) { return true; } //如果传递进来的参数是String类的实例 if (anObject instanceof String) { String anotherString = (String)anObject; int n = count;//字符串长度 i

对上次“对字符串进行简单的字符数字统计 探索java中的List功能 ”程序,面向对象的改进

之前的随笔中的程序在思考后发现,运用了太多的static 函数,没有将面向对象的思想融入,于是做出了一下修改: 1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List; 4 import java.util.Scanner; 5 6 7 public class classtest { 8 9 List<String> number=new ArrayList<String

对字符串进行简单的字符数字统计 探索java中的List功能

题目: 统计一个字符串中数字和字符串的个数,并分别进行排列,要求 1.数字,字符串可以从键盘获取. 2.储存在list 3.统计数字个数,字符串个数 4.把数字和字符串按从小到大的顺序输出 5.不能使用数组. List的用法 List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以List接口还提供了一些适合于自身的常用方法.[自行百度] List接口提供的