poi导入导出

public static void createExcel(List> list, HttpServletResponse response)throws Exception {

try {

//创建工作簿

            HSSFWorkbook wb =new HSSFWorkbook();

            String filename ="驿站能耗统计表";

            CellRangeAddress cellAddresses =new CellRangeAddress(0,0,0,list.get(0).size() -1);

            HSSFCellStyle style =createCellStyle(wb,(short)18);

            String titleName = list.get(list.size() -1).get("monthName") + filename;

            HSSFSheet sheet=wb.createSheet(titleName);

            sheet.addMergedRegion(cellAddresses);

            // 设置默认列宽

            sheet.setDefaultColumnWidth(16);

//            sheet.setDefaultRowHeightInPoints(20);

//            sheet.autoSizeColumn(1, true);

            //创建表头行

            HSSFRow row = sheet.createRow(0);

//            row.setHeightInPoints(25);

            HSSFCell cell = row.createCell(0);

            cell.setCellStyle(style);

            cell.setCellValue(filename);

            HSSFRow oneRow = sheet.createRow(1);

            HSSFCell oneRowCell1=oneRow.createCell(0);

            oneRowCell1.setCellValue("时间");

            oneRowCell1.setCellStyle(createCellStyle(wb,(short)11));

            HSSFCell oneRowCell2=oneRow.createCell(1);

            oneRowCell2.setCellValue("用电量");

            oneRowCell2.setCellStyle(createCellStyle(wb,(short)11));

            HSSFCell oneRowCell3=oneRow.createCell(2);

            oneRowCell3.setCellValue("光伏发电量");

            oneRowCell3.setCellStyle(createCellStyle(wb,(short)11));

            HSSFCell oneRowCell4=oneRow.createCell(3);

            oneRowCell4.setCellValue("储能充电量");

            oneRowCell4.setCellStyle(createCellStyle(wb,(short)11));

            HSSFCell oneRowCell5=oneRow.createCell(4);

            oneRowCell5.setCellValue("储能放电量");

            oneRowCell5.setCellStyle(createCellStyle(wb,(short)11));

            //循环数据

            for (int i =0; i < list.size() -1; i++) {

HSSFRow listRow = sheet.createRow(2+i);

                //第一列

                HSSFCell listCell1 = listRow.createCell(0);

                listCell1.setCellValue((String) list.get(i).get("time"));

                listCell1.setCellStyle(createCellStyle(wb,(short)11));

                //第二列

                HSSFCell listCell2 = listRow.createCell(1);

                listCell2.setCellValue((Double) list.get(i).get("yongdianliang"));

                listCell2.setCellStyle(createCellStyle(wb,(short)11));

                //第三列

                HSSFCell listCell3 = listRow.createCell(2);

                listCell3.setCellValue((Double) list.get(i).get("fadianliang"));

                listCell3.setCellStyle(createCellStyle(wb,(short)11));

                //第四列

                HSSFCell listCell4 = listRow.createCell(3);

                listCell4.setCellValue((Double) list.get(i).get("chongdianliang"));

                listCell4.setCellStyle(createCellStyle(wb,(short)11));

                //第五列

                HSSFCell listCell5 = listRow.createCell(4);

                listCell5.setCellValue((Double) list.get(i).get("fangdianliang"));

                listCell5.setCellStyle(createCellStyle(wb,(short)11));

            }

HSSFRow lastrow = sheet.createRow(2+list.size()-1);

            HSSFCell lastCell1 = lastrow.createCell(0);

            lastCell1.setCellValue((String) list.get(list.size()-1).get("name"));

            lastCell1.setCellStyle(createCellStyle(wb,(short)11));

            HSSFCell lastCell2 = lastrow.createCell(1);

            lastCell2.setCellValue((Double) list.get(list.size()-1).get("sum1"));

            lastCell2.setCellStyle(createCellStyle(wb,(short)11));

            HSSFCell lastCell3 = lastrow.createCell(2);

            lastCell3.setCellValue((Double) list.get(list.size()-1).get("sum2"));

            lastCell3.setCellStyle(createCellStyle(wb,(short)11));

            HSSFCell lastCell4 = lastrow.createCell(3);

            lastCell4.setCellValue((Double) list.get(list.size()-1).get("sum3"));

            lastCell4.setCellStyle(createCellStyle(wb,(short)11));

            HSSFCell lastCell5 = lastrow.createCell(4);

            lastCell5.setCellValue((Double) list.get(list.size()-1).get("sum4"));

            lastCell5.setCellStyle(createCellStyle(wb,(short)11));

            OutputStream out = response.getOutputStream();

            response.reset();

            response.setCharacterEncoding("UTF-8");

            response.setContentType("application/vnd.ms-excel");

            response.setHeader("content-disposition",

                    "attachment;filename=" +new String(titleName.getBytes("utf-8"),"ISO-8859-1" )+".xls");

            //文档输出

            //FileOutputStream qwe = new FileOutputStream("D:\\" +"租户账期欠费表.xls");

            try {

wb.write(out);

            }catch (Exception e) {

e.printStackTrace();

                throw new Exception("导出表单失败!!!");

            }finally {

out.close();

            }

}catch (Exception e){

e.printStackTrace();

            throw new Exception("导出表单失败!");

        }

}

/**

    * 创建单元格样式

    *

    * @param workbook 工作簿

    * @param fontSize 字体大小

    * @return 单元格样式

    */

    private static HSSFCellStylecreateCellStyle(HSSFWorkbook workbook, short fontSize) {

HSSFCellStyle style = workbook.createCellStyle();

        style.setAlignment(HorizontalAlignment.CENTER);// 水平居中

        style.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中

        HSSFFont font = workbook.createFont();

        font.setFontHeightInPoints(fontSize);

        // 创建字体

        font.setFontName("宋体");

        // 加载字体

        style.setFont(font);

        return style;

    }

/**

    * 读取出filePath中的所有数据信息

    * @param filePath excel文件的绝对路径

    *

*/

    public static void getDataFromExcel(String filePath)

{

//String filePath = "E:\\123.xlsx";

        //判断是否为excel类型文件

        if(!filePath.endsWith(".xls")&&!filePath.endsWith(".xlsx"))

{

System.out.println("文件不是excel类型");

        }

FileInputStream fis =null;

        Workbook wookbook =null;

try

        {

//获取一个绝对地址的流

            fis =new FileInputStream(filePath);

        }

catch(Exception e)

{

e.printStackTrace();

        }

try

        {

//2003版本的excel,用.xls结尾

            wookbook =new HSSFWorkbook(fis);//得到工作簿

        }

catch (Exception ex)

{

//ex.printStackTrace();

            try

            {

//2007版本的excel,用.xlsx结尾

                wookbook =new XSSFWorkbook(fis);//得到工作簿

            }catch (IOException e)

{

// TODO Auto-generated catch block

                e.printStackTrace();

            }

}

//得到一个工作表

        Sheet sheet = wookbook.getSheetAt(0);

        //获得表头

        Row rowHead = sheet.getRow(0);

        //判断表头是否正确

        if(rowHead.getPhysicalNumberOfCells() !=3)

{

System.out.println("表头的数量不对!");

        }

//获得数据的总行数

        int totalRowNum = sheet.getLastRowNum();

        //要获得属性

        String name ="";

//        int latitude = 0;

        String latitude ="";

        //获得所有数据

        for(int i =1 ; i <= totalRowNum; i++)

{

//获得第i行对象

            Row row = sheet.getRow(i);

            //获得获得第i行第0列的 String类型对象

            Cell cell = row.getCell((short)0);

            name = cell.getStringCellValue().toString();

            cell = row.getCell((short)1);

            latitude = cell.getStringCellValue().toString();

            //获得一个数字类型的数据

//            cell = row.getCell((short)1);

//            latitude = (int) cell.getNumericCellValue();

            System.out.println("名字:"+name+",经纬度:"+latitude);

        }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,548评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,497评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,990评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,618评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,618评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,246评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,819评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,725评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,268评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,356评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,488评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,181评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,862评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,331评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,445评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,897评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,500评论 2 359

推荐阅读更多精彩内容