导出到excel是很多业务都会用到的,现在说明一种简单的导出:利用poi导出。
1.首先引入poi-3.7.jar包。
2.要导出的类中添加引用:
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
3.利用poi进行导出:
/**
* 导出excel
*/
public void exportExcel() {
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(Messages.PpOrderSendView_18);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue("列1");
cell.setCellStyle(style);
cell = row.createCell((short) 1);
cell.setCellValue("列2");
cell.setCellStyle(style);
cell = row.createCell((short) 2);
cell.setCellValue("列3");
cell.setCellStyle(style);
cell = row.createCell((short) 3);
cell.setCellValue(Messages.PpOrderSendView_0);
cell.setCellStyle(style);
// 第五步,写入实体数据 实际应用中这些数据从数据库得到,
//
List<PpSendOrder> list = (List<PpSendOrder>) listModel.getContents();//获取数据
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow((int) i + 1);
PpSendOrder ppSendOrder = (PpSendOrder) list.get(i);
// 第四步,创建单元格,并设置值
row.createCell((short) 0).setCellValue(ppSendOrder.getNameC());//和定义的列要对应
row.createCell((short) 1).setCellValue(ppSendOrder.getDate());
row.createCell((short) 2).setCellValue(ppSendOrder.getDayshiftI());
}
// 第六步,保存文件
try {
FileDialog fd = new FileDialog(getSite().getShell(), SWT.SAVE);//保存文件的对话框
fd.setFilterNames(new String[] {
"XLS Files (*.xls)", "All Files (*.*)" }); //保存的文件名
fd.setFilterExtensions(new String[] { "*.xls", "*.*" }); //$NON-NLS-1$ //$NON-NLS-2$
String fn = fd.open();
if (StringUtil.isNullOrBlank(fn)) {
return;
}
if (!fn.endsWith(".xls")) { //如果输入的文件名没有扩展名,则加上.xls作为扩展名
fn += ".xls"; //$NON-NLS-1$
}
final File file = new File(fn);
FileOutputStream fout = new FileOutputStream(file);//放入流中
wb.write(fout);
fout.close();
} catch (Exception e) {
e.printStackTrace();
}
}