`
songlei8090
  • 浏览: 39292 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java程序连接数据库查询再导出Excel中

阅读更多
package com.unisys;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;


import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.Region;




public class Excels {

/**
     * 到处Excel文件的Action
     * @return
* @throws Exception
* @throws Exception
     * @throws Exception
     */
public static void main(String[] args) throws Exception {
List userList = findDate();

        // 调用导出方法
        try {
export(userList);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


/**
     * 导出操作
     * @param col 所要导出对象集合
     */
    private static void export(List<String[]> col) throws Exception {
   
        FileOutputStream out = new FileOutputStream("d://"+"导出excel数据"+System.currentTimeMillis() + ".xls");
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(getExcelInputStream(col));
            bos = new BufferedOutputStream(out);
            byte[] buff = new byte[4096];
            int bytesRead;
            // Simple read/write loop.
            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                bos.write(buff, 0, bytesRead);
            }
        } catch (Exception e) {
            throw e;
        } finally {
            if (bis != null)
                bis.close();
            if (bos != null)
                bos.close();
        }
    }
   
    private static InputStream getExcelInputStream(List col) throws Exception, NoSuchMethodException, IllegalAccessException {
   
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet=null;
    HSSFCellStyle titleStyle=null;
    Short count = 2;
        int flag=0;
        int tiao=700;
        //判断几个sheet表
        if(col.size()%tiao==0){
        flag=col.size()/tiao;
        }else{
        flag=col.size()/tiao+1;
        }
        int j=1;
        //控制表的张数
        for (int i = 0; i < flag; i++) {
        sheet = wb.createSheet("sheet"+(i+1));
            
             titleStyle = wb.createCellStyle();
             titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
             titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
             HSSFFont font = wb.createFont();
             font.setColor(HSSFColor.BLACK.index);
             font.setFontHeightInPoints((short);
             font.setItalic(false);
             font.setStrikeout(false);
             font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

             titleStyle.setFont(font);
             //中间对齐的格式
             HSSFCellStyle centerStyle = wb.createCellStyle();
             centerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
             centerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
             //右边对齐的格式
             HSSFCellStyle rightStyle = wb.createCellStyle();
             rightStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
             rightStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

             //为sheet生成标题Row的所有类容
             processExcelHeader(sheet, titleStyle);

             //处理每个列的宽度
             processCellWidth(sheet);
      
             //控制每张表的条数
        for (;j < col.size()+1; j++) {
        if(j%tiao==0){
        processElectricitybillBasestationToExcel((String[])col.get(j-1), count, sheet, centerStyle, rightStyle);
                    count = (short) (count + 1);
        count=2;
        break;
                 }
        processElectricitybillBasestationToExcel((String[])col.get(j-1), count, sheet, centerStyle, rightStyle);
                 count = (short) (count + 1);
}
        j++;
        }
       
        count = (short) (count + 2);
       
       /* for (Iterator ite = col.iterator(); ite.hasNext();) {
            //将信息写入Excel中
            processElectricitybillBasestationToExcel((StuModel) ite.next(), count, sheet, centerStyle, rightStyle);
            count = (short) (count + 1);
        }*/
        //合计
        HSSFRow row = sheet.createRow(count);
        //第一行的单元格
        HSSFCell cell = null;
        cell = row.createCell((short) 0);
//        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
       
        cell.setCellValue("数据总计:"+col.size());
        cell.setCellStyle(titleStyle);
        cell = row.createCell((short) 1);
        sheet.addMergedRegion(new Region(count, (short) 0, count, (short) 7));

        ByteArrayOutputStream os = new ByteArrayOutputStream();
        try {
            wb.write(os);
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] content = os.toByteArray();
        InputStream is = new ByteArrayInputStream(content);
        return is;
    }
   
    /**
     * 处理Excel的标题栏
     * @param sheet
     * @param titleStyle
     */
    private static void processExcelHeader(HSSFSheet sheet, HSSFCellStyle titleStyle) {
        //行号
        //第一行
        HSSFRow row = sheet.createRow(0);
        //第二行
        HSSFRow sRow = sheet.createRow(1);
        //第一行的单元格
        HSSFCell cell = null;
        //第二行的单元格
        HSSFCell sCell = null;
        //序号
        cell = row.createCell((short) 0);
        cell.setCellStyle(titleStyle);
//       cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("序号");
        sCell = sRow.createCell((short) 0);
        sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0));

        //clcustid
        cell = row.createCell((short) 1);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("CLCUSTID");
        sCell = sRow.createCell((short) 1);
        sheet.addMergedRegion(new Region(0, (short) 1, 1, (short) 1));
        cell.setCellStyle(titleStyle);
       
        //csrname
        cell = row.createCell((short) 2);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("custname");
        sCell = sRow.createCell((short) 2);
        sheet.addMergedRegion(new Region(0, (short) 2, 1, (short) 2));

        //clcallid
        cell = row.createCell((short) 3);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("CLCALLID");
        sCell = sRow.createCell((short) 3);
        sheet.addMergedRegion(new Region(0, (short) 3, 1, (short) 3));
       
       //clcalltime
        cell = row.createCell((short) 4);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("CLCALLTIME");
        sCell = sRow.createCell((short) 4);
        sheet.addMergedRegion(new Region(0, (short) 4, 1, (short) 4));
       
         //clcsrid
        cell = row.createCell((short) 5);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("CLCSRID");
        sCell = sRow.createCell((short) 5);
        sheet.addMergedRegion(new Region(0, (short) 5, 1, (short) 5));
       
        //clclitelno
        cell = row.createCell((short) 6);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("CLCLITELNO");
        sCell = sRow.createCell((short) 6);
        sheet.addMergedRegion(new Region(0, (short) 6, 1, (short) 6));
       
      //callreasontype 
        cell = row.createCell((short) 7);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("CALLREASONTYPE");
        sCell = sRow.createCell((short) 7);
        sheet.addMergedRegion(new Region(0, (short) 7, 1, (short) 7));
       
      //callreason
        cell = row.createCell((short);
        cell.setCellStyle(titleStyle);
        cell.setCellValue("CALLREASON");
        sCell = sRow.createCell((short);
        sheet.addMergedRegion(new Region(0, (short) 8, 1, (short));
            
  
    }

    /**
     * 全局控制 多少列
     * @param sheet
     */
    private static  void processCellWidth(HSSFSheet sheet) {
        sheet.setColumnWidth((short) 0, (short) (10 * 256));
        sheet.setColumnWidth((short) 1, (short) (15 * 256));
        sheet.setColumnWidth((short) 2, (short) (15 * 256));
        sheet.setColumnWidth((short) 3, (short) (20 * 256));
        sheet.setColumnWidth((short) 4, (short) (20 * 256));
        sheet.setColumnWidth((short) 5, (short) (20 * 256));
        sheet.setColumnWidth((short) 6, (short) (15 * 256));
        sheet.setColumnWidth((short) 7, (short) (15 * 256));
        sheet.setColumnWidth((short) 8, (short) (15 * 256));
    }
   
    /**
     * 将 要导出的数据 的信息填充到Excel中
     * @param eb
     * @param count
     * @param sheet
     * @param centerStyle
     * @throws Exception
     */
    private static void processElectricitybillBasestationToExcel(String[] str, Short count, HSSFSheet sheet, HSSFCellStyle centerStyle, HSSFCellStyle rightStyle) throws Exception {
        //根据基站编号取得基站信息
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");
        //行号
        //第一行
        HSSFRow row = sheet.createRow(count);
        //第一行的单元格
        HSSFCell cell = null;
        //序号
        cell = row.createCell((short) 0);
//        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellValue(count - 1);
        cell.setCellStyle(centerStyle);

        //车号
        cell = row.createCell((short) 1);
        cell.setCellStyle(centerStyle);
//        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellValue(str[1]);

        //车辆型号
        cell = row.createCell((short) 2);
//        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellStyle(centerStyle);
        cell.setCellValue(str[0]);
    }
    public static List<String[]> findDate() throws Exception
{  
    List<String[]> list=new ArrayList<String[]>();
Connection conn = null;

try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
conn = DriverManager.getConnection(url, "sl", "sl");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String sql="select * from student";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs= ps.executeQuery();
while(rs.next()){
String[] s=new String[2];
s[0]=rs.getString("stuId");
s[1]=rs.getString("stuName");
list.add(s);

}
ps.execute();
ps.close();
conn.close();
return list;
}
  

}

     
分享到:
评论

相关推荐

    java连接数据库登录 查询结果导出excel

    总结起来,Java连接数据库并导出Excel的过程涉及JDBC的数据库操作和Apache POI的Excel文件生成。通过理解这些技术和API,开发者可以构建一个能够从数据库中获取数据,然后以Excel格式提供的系统。这在Web应用中非常...

    java操作数据库 导出excel

    总结来说,完成"java操作数据库导出excel"的任务,你需要掌握以下关键点: 1. 使用JDBC连接数据库,执行SQL查询。 2. 处理ResultSet,获取查询结果。 3. 引入Apache POI库,创建Excel工作簿和工作表。 4. 将数据库...

    java实现mysql数据库的表导出到excel文件

    在IT行业中,将数据库数据导出到Excel文件是一种常见的需求,尤其在数据分析、报表生成或者数据备份时。本文将详细讲解如何使用Java实现从MySQL数据库的表导出到Excel文件的过程,以及涉及到的关键技术和工具。 ...

    Java实现数据库数据导出到excel,内有数据连接jar包

    在Java编程环境中,将数据库中的数据导出到Excel文件是一项常见的任务,特别是在数据分析、报表生成或数据备份等场景。这个项目提供了完整的解决方案,包括必要的jar包支持数据连接。以下是关于这个主题的一些关键...

    使用poi从数据库导出excel表的示例

    总结起来,"使用poi从数据库导出excel表的示例"是一个结合了Struts1 MVC框架和Apache POI库的Java编程任务,它涉及数据库连接、SQL查询、Excel文件生成以及Web应用响应。这个过程不仅有助于数据的高效管理和分享,也...

    excel表导入数据库 数据库导出excel(idea平台)

    3. 预编译SQL语句,根据Excel中的数据生成插入语句,防止SQL注入问题。 4. 将Java对象中的数据转化为适合数据库的格式,执行SQL插入操作。 5. 在Servlet中接收前端请求,调用上述逻辑,处理完成后返回响应信息。 ...

    java解析Excel文件并把数据存入数据库和导出数据为excel文件SpringBoot代码示例

    1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....

    将Excel文件导入到数据库中或将数据库中文件导出Excel中

    其次,从数据库导出数据到Excel则相对简单: 1. 查询数据:使用SQL语句查询需要导出的数据,可以是整个表,也可以是满足特定条件的部分数据。 2. 输出格式设置:确定数据导出的格式,例如CSV或TSV,这两种格式可以...

    JAVA实现数据库数据导入导出到Excel(POI)所需jar包

    在Java开发中,有时我们需要将数据库中的数据导出到Excel文件,或者从Excel文件导入数据到数据库。Apache POI是一个流行的API,专为处理Microsoft Office格式的文件,如Excel(.xlsx, .xls)。本教程将详细介绍如何...

    导出数据库表结构(excel)程序

    在压缩包的"数据库导出excel"文件中,可能包含有以下内容: 1. 程序源代码:如Java、Python或C#,用于实现数据库连接、查询和Excel导出的功能。 2. 配置文件:用于设置数据库连接参数,如用户名、密码、服务器地址等...

    java根据查询出来的结果导出excel表

    通过条件查询数据库list,根据list去导出多列的excel表格,亲测有效工具类和代码js controller都放在一起

    java实现数据库表数据导出Excel百万级(支持mysql,oralce)

    在Java开发中,将数据库中的数据导出到Excel文件是一项常见的需求,特别是在处理大量数据时。本项目专注于解决百万级数据的高效导出问题,同时兼容MySQL和Oracle两大主流数据库。下面将详细介绍这个主题涉及的关键...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...

    C#利用Response流将数据库数据导出成Excel

    导出Excel文件 在上面的代码中,我们使用了Response流将数据库数据导出到Excel文件中。该代码主要实现了以下几个步骤: 1. 首先,我们设置Response流的编码为GB2312,这是中国国家标准的编码方式。 2. 其次,我们...

    java实现导出oarcle表结构到excel

    在Java编程环境中,将Oracle数据库的表结构导出到Excel是一种常见的需求,特别是在数据库管理和数据分析时。这个场景可以通过两个核心类来实现:`TableStructureToExcel.java`和`ConnectionOracle.java`。这两个类...

    Java导出数据到Excel文件中(支持多表头)

    在Java编程中,导出数据到Excel文件是一项常见的任务,特别是在数据分析、报表...通过以上步骤,我们可以构建一个灵活且高效的Java程序,将数据库中的数据导出为具有多级表头的Excel文件,满足数据分析和报告的需求。

    java MongoDB查询数据导出为excel表格

    1.java连接mongo数据库查询统计信息导出为excel表格 2.所有连接参数都可以动态输入,参数包括:ip、端口、数据库名称、集合名称、查询参数(公众号,写在指定文件中),导出表格存放位置

    java从数据库查询文件下载成Excel

    在Java编程中,将数据库查询结果导出为Excel文件是一项常见的需求,这通常涉及到数据库操作、文件处理以及HTTP响应的构建。以下是对这个主题的详细解释: 首先,我们需要连接到数据库,这通常通过JDBC(Java ...

    java编写的数据库导入和导出工具

    在IT行业中,数据库的导入和导出是常见的数据管理任务,尤其对于开发人员和系统管理员而言,这是一项必备技能。本项目"java编写的数据库导入和导出工具"旨在简化这个过程,支持对SQL Server和MySQL数据库进行数据的...

    java poi导出图片到excel示例代码

    Java POI导出图片到Excel示例代码,标题表明了本文的主要内容,即使用Java POI将图片导出到Excel中。 描述解释 描述中提到了本文的主要内容,即使用Java POI将图片导出到Excel中,并提供了详细的示例代码,对大家的...

Global site tag (gtag.js) - Google Analytics