内容
1、jsp页面
<form action="xsbf" method="post" style="margin-top: 100px;margin-left: 400px;">
学生信息备份:<input type="submit" value="备份" style="background-color: black; width:120px; margin-left:30px; height:30px; color: white;border: 0px;">
</form>
2、web.xml配置
<servlet>
<servlet-name>Sexport</servlet-name>
<servlet-class>toexcel.Sexport</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Sexport</servlet-name>
<url-pattern>/xsbf</url-pattern>
</servlet-mapping>
3、servlet页面
try {
//获得得到的结果集
ResultSet rs = udb.execSQL("select * from student");
//设置response的ContentType为Excel格式
response.setContentType("application/vnd.ms-excel");
//attachment 作为附件下载
response.addHeader("Content-Disposition", "attachment; filename='student.xls'");
OutputStream outputStream = response.getOutputStream();
//创建一个可写的工作簿对象,直接写入输出流
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(outputStream);
//创建excel工作表 参数分别为名称和插入位置这个从0开始
jxl.write.WritableSheet ws = wwb.createSheet("Sheet1", 0);
//表格样式
//设置列默认的宽度
ws.getSettings().setDefaultColumnWidth(20);
//设置字体 为ARIAI 为11号字体
WritableFont font = new WritableFont(WritableFont.ARIAL,11);
//生成格式
WritableCellFormat cellFormat = new WritableCellFormat(font);
//设置文字居中对齐
cellFormat.setAlignment(Alignment.CENTRE);
//设置文字垂直居中
cellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
int i = 0;
int j = 0;
//表格标题行
//getMetaData获取字段数,实际上获取的是ResultMetaData对象,获取类型和属性
//返回结果集的列数
for(int k = 0; k < rs.getMetaData().getColumnCount(); k++){
//文本填充 列数、行数、填充的内容 getColumnName下标从1开始 使用的格式为设置好的字体格式
ws.addCell(new Label(k, 0, rs.getMetaData().getColumnName(k + 1), cellFormat));
}
//表格内容行
while(rs.next()){
for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
//列数、行数、内容和格式
ws.addCell(new Label(k, j + i + 1, rs.getString(k + 1), cellFormat));
}
i++;
}
//写入工作簿
wwb.write();
//关闭
wwb.close();
//关闭结果集
rs.close();
//关闭数据库连接
udb.closeSQLConnect();
4、数据库类
private final String dbDriver = "com.mysql.jdbc.Driver";
private final String url = "jdbc:mysql://127.0.0.1:3306/work";
private final String username = "root";
private final String password = "lsm123";
private Connection connection = null;
public Udb() {
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("数据库驱动加载失败");
}
try {
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("数据库连接失败");
}
}