将数据库数据导出到excel表格,本文只是将数据库数据生成到本地桌面的score.xls中。若想实现用户下载服务器端生成的表格到用户本地功能,需要先在服务器端生成表格中的数据,然后在服务器端生成此excel表格,然后从将服务器端生成的这个表格下载到用户本地。
package util;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.filechooser.FileSystemView;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
*
* @description 导出数据到excel表格
* @author Liuep
* @version 1.0
*
*/
public class ExportExcelUtil {
public static void main(String[] args) {
// 生成的excel表格的文件名
String fileName = "score.xls";
// Excel表格中的标题行(第一行)
String[] title = {"序号", "姓名", "科目", "成绩"};
//Excel表格的内容--可为数据库查询出的数据内容
List<String> data = new ArrayList<String>();
data.add("1");
data.add("张三");
data.add("Java开发");
data.add("90");
List<String> data1 = new ArrayList<String>();
data1.add("2");
data1.add("李四");
data1.add("C++开发");
data1.add("85");
List<String> data2 = new ArrayList<String>();
data2.add("3");
data2.add("王五");
data2.add("Html前端开发");
data2.add("99");
List<List<String>> allData = new ArrayList<List<String>>();
allData.add(data);
allData.add(data1);
allData.add(data2);
makeExcel(fileName, title, allData);
}
/**
* 生成excel表格
* @param fileName 表格名称
* @param title 表格中的标题行
* @param context 表格中的内容
*/
public static void makeExcel(String fileName, String[] title, List<List<String>> context) {
WritableWorkbook wk = null;
try {
// 获取本机桌面路径
FileSystemView fsv = FileSystemView.getFileSystemView();
File disk = fsv.getHomeDirectory();
System.out.println(disk.getPath()); //C:\Users\Admin\Desktop
String path = disk.getPath() + "/" + fileName;
System.out.println("path:" + path); //C:\Users\Admin\Desktop/score.xls
File file = new File(path);
if (file.exists()) {
file.delete();
}
// 创建可写入的Excel工作薄 fileName为要新建的文件名
wk = Workbook.createWorkbook(new File(path));
// 创建可写入的Excel工作表 生成名为“成绩”的工作表 0表示这是第一页
WritableSheet sheet = wk.createSheet("成绩", 0);
// 表头
for (int i = 0; i < title.length; i++) {
// 添加Label对象,参数依次表示在第一列,第一行,内容,使用的格式
Label labTitle = new Label(i, 0, title[i]);
sheet.addCell(labTitle);
}
// 内容
for (int i = 0; i < context.size(); i++) {
for (int j = 0; j < context.get(i).size(); j++) {
Label labTitle = new Label(j, i + 1, context.get(i).get(j));
sheet.addCell(labTitle);
}
}
wk.write();
System.out.println("Excel数据生成完毕!!!");
} catch (IOException e) {
} catch (RowsExceededException e) {
} catch (WriteException e) {
} finally {
try {
wk.close();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}