eclipse sql server 导出excel文件

Jxl.jar

访问Excel的Jar包

注意:支持以.xls结尾的Excel文件,可能不支持.xlsx结尾的 

下载地址:

程序所需要得包:

程序代码:

package partice;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import javax.swing.JOptionPane;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class export {
    static ResultSet rs = null;
    static ResultSetMetaData rsData = null;
    static int sheetIndex = 0; // 计数器,起始为0
    static int perPageSize = 60000;// excel2003每张表最大为65536行
    static String fileName = "调剂学生信息.xls";// 新建的表格名称
    static String URL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=studentdatabase";// 数据库IP地址
    static String DriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    static String username = "sa";// 用户
    static String password = "19940503";// 密码
public  void main(String[] args) throws Exception {
        connectOracle();
    }
public void connectOracle() throws SQLException, ClassNotFoundException {
        Connection conn = null;
        Class.forName(DriverName);
        long begintime = System.currentTimeMillis();
        try {
            System.out.println("数据库连接开始:" + new Date(System.currentTimeMillis()));
            conn = DriverManager.getConnection(URL, username, password);
            Statement state = conn.createStatement(
                    ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            String sql = "select * from register";
            rs = state.executeQuery(sql);
            rsData = rs.getMetaData();// 获得所需要的rs信息
            rs.last();
            int size = rs.getRow();// 列数
            rs.beforeFirst();
            int sheetsize = size / perPageSize + 1;// sheetsize是sheet的总页数
            writeexcel(rs);// 新建一个excel,并且写入第一张表,每次只能写一张表
            for (int i = 1; i < sheetsize; i++) {
                System.out.println(2);
                updateexcel(rs);// 写入后面的后面的表
            }
        } catch (Exception e) {
            System.out.println("数据库连接错误");
            e.printStackTrace();
        } finally {
            conn.close();
            System.out.println("数据库连接关闭!用时:"
                    + (System.currentTimeMillis() - begintime) + "ms");
            JOptionPane.showMessageDialog(null, "导出成功", "提示信息", JOptionPane.WARNING_MESSAGE);
        }
    }
static void writeexcel(ResultSet rs) throws IOException, Exception,
            WriteException {
        WritableWorkbook book = Workbook.createWorkbook(new File(fileName));
        WritableSheet sheet = book.createSheet("第" + (sheetIndex + 1) + "页",
                sheetIndex);
        int i = 1;// 每一页设为第一行
        while (rs.next()) {
            for (int j = 1; j <= rsData.getColumnCount(); j++) {
                Label label = new Label(j - 1, i, rs.getString(j) == null ? ""
                        : rs.getString(j).toString());
                if (i == 1) {// 标题只加载第一次
                    Label titleLabel = new Label(j - 1, 0, rsData
                            .getColumnName(j));
                    sheet.addCell(titleLabel);
                }
                sheet.addCell(label);
            }
            i++;
            if (i > perPageSize) {
                break;
            }
        }
        sheetIndex++;
        book.write();
        book.close();
    }
static void updateexcel(ResultSet rs) throws BiffException, IOException,
            RowsExceededException, WriteException, SQLException {
        Workbook wb = Workbook.getWorkbook(new File(fileName));
        WritableWorkbook book = Workbook.createWorkbook(new File(fileName), wb);
        WritableSheet sheet = book.createSheet("第" + (sheetIndex + 1) + "页 ",
                sheetIndex);
        int i = 1;// 每一页设为第一行
        while (rs.next()) {
            for (int j = 1; j <= rsData.getColumnCount(); j++) {
                Label label = new Label(j - 1, i, rs.getString(j) == null ? ""
                        : rs.getString(j).toString());
                if (i == 1) {// 标题只加载第一次
                    Label titleLabel = new Label(j - 1, 0, rsData
                            .getColumnName(j));
                    sheet.addCell(titleLabel);
                }
                sheet.addCell(label);
            }
            i++;
            if (i > perPageSize) {
                break;
            }
        }
        sheetIndex++;
        book.write();
        book.close();
    }
}

对应数据库

 java实现数据库导出ECXL表格:ttps://blog.csdn.net/captian_900331/article/details/49689199

原文地址:https://www.cnblogs.com/fcfc940503/p/10823856.html