Como armazenar/recuperar documentos XLS para/do SQL Server

O exemplo abaixo mostra como armazenar e ler dados xls do SQL server.

import java.sql.*;
import java.io.*;

public class saveXLSToDb {
    public static void main(String[] args) {
        DB db = new DB();
        Connection conn=db.dbConnect(
             "jdbc:jtds:sqlserver://localhost:1433/smpp","sa","");
        
        db.insertXLS(conn,"d://servlet//jdbc//temp.xls");
        db.getXLSData(conn);
    }
    
}

class DB {
    public DB() {}
    
    public Connection dbConnect(String db_connect_string,
            String db_userid, String db_password) {
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Connection conn = DriverManager.getConnection(
                              db_connect_string, db_userid, db_password);
            
            System.out.println("conectado");
            return conn;
            
        catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    public void insertXLS(Connection conn,String filename) {
        int len;
        String query;
        PreparedStatement pstmt;
        
        try {
            File file = new File(filename);
            FileInputStream fis = new FileInputStream(file);
            len = (int)file.length();
            query = ("insert into TableImage VALUES(?,?,?)");
            pstmt = conn.prepareStatement(query);
            pstmt.setString(1,file.getName());
            pstmt.setInt(2, len);
            pstmt.setBinaryStream(3, fis, len); 
            pstmt.executeUpdate();
            
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void getXLSData(Connection conn) {
        
        byte[] fileBytes;
        String query;
        try {
            query = 
              "select data from tableimage where filename like '%.xls%'";
            
            Statement state = conn.createStatement();
            ResultSet rs = state.executeQuery(query);
            if (rs.next()) {
                fileBytes = rs.getBytes(1);
                OutputStream targetFile=  new FileOutputStream(
                        "d://servlet//jdbc//newtemp.xls");
                
                targetFile.write(fileBytes);
                targetFile.close();
            }
            
        catch (Exception e) {
            e.printStackTrace();
        }
    }
};