1

私はこのDAOを持っています。

public class AreaDAO {

    private Database database;

    public AreaDAO(Database database) {
        this.database = database;
    }

    public List<Area> list() throws SQLException {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        List<Area> areas = new ArrayList<Area>();

        try {
            connection = database.getConnection();
            statement = connection.prepareStatement("select distinct img_hub, country from ifs_db limit 50");
            resultSet = statement.executeQuery();
            while (resultSet.next()) {
                Area area = new Area();
                area.setImg_hub(resultSet.getString("img_hub"));
                area.setCountry(resultSet.getString("country"));
                areas.add(area);
            }
        } finally {
            if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
            if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
            if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
        }

        return areas;
    }
}

これにより、データのリストが作成されます。

リンクをクリックするだけで、ユーザーにExcelですべてのデータをダウンロードさせるにはどうすればよいですか。

私は私たちを調査し、これを見つけました...(BalusCによる)

    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment; filename=name.xls");
    WritableWorkbook workBook  = Workbook.createWorkbook(response.getOutputStream());

サーブレットに配置しますが、空白のワークシートを取得するだけです...これを使用してユーザーにダウンロードさせるにはどうすればよいですか?

4

1 に答える 1

3

あなたがこの質問に対する私の答えを参照していることを理解していますか?この行に注意してください// ...。ここに、ワークブックにDBからのデータを入力する必要があります。その質問のOPはすでにそれを知っていたので、簡潔にするために省略されました。

POI HSSF自身のサイトで、APIの使用方法に関するクイックガイドを見つけることができます。

セルを使用してシートを作成する方法のキックオフの例を次に示します。

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=name.xls");
WritableWorkbook workbook = Workbook.createWorkbook(response.getOutputStream());
WritableSheet sheet = workbook.createSheet("Sheet1", 0);
sheet.addCell(new Label(0, 0, "Hello World"));
// ...
workbook.write();
workbook.close();

を繰り返しながらセルを追加できますList<Area>。例えば

for (int i = 0; i < list.size(); i++) {
    Area area = list.get(i);
    sheet.addCell(new Label(0, i, area.getImgHub()));
    sheet.addCell(new Label(1, i, area.getCountry()));
}
于 2012-06-25T21:35:43.597 に答える