业务描述:客户要求将系统中的数据按照指定的模板导出到excel中。
话不多说,上代码:
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
上面是主要导入的包;
//点击导出模板按钮
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showSaveDialog(this);
if(returnVal == 1){
return;
}
String directory = chooser.getSelectedFile().getPath();
if ((StringUtil.isEmpty(directory))) {
MessageDialog.showErrorDlg(this, "提示", "未输入文件名");
return;
}
try{
String startname = directory;
//导出业务处理
exportTemplate(startname);
}catch(Exception e){
MessageDialog.showErrorDlg(this, "提示", "导出模板失败");
return;
}
MessageDialog.showHintDlg(this, "提示", "导出模板成功");
return;
上述代码主要是弹出选择框,用户可以选择存放文件路径、名称等;
/**
* 导出模板
* @author zhuaizhuaihenguai
* @date 2018年5月9日11:08:36
*/
private void exportTemplate(String startname) {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
wb.createCellStyle().setAlignment(HSSFCellStyle.ALIGN_CENTER);
CellStyle css = wb.createCellStyle();
DataFormat format = wb.createDataFormat();
css.setDataFormat(format.getFormat("@"));
//设置单元格列宽
for(int i = 0;i
//设置单元格格式为文本模式
sheet.setDefaultColumnStyle(i,css);
//设置列宽
sheet.setColumnWidth(i,3600);
}
CellRangeAddress region1 = new CellRangeAddress(0, 0,
(short) 0,(short) 15);
CellRangeAddress region2 = new CellRangeAddress(0, 0,
(short) 16,(short) 58);
// 创建第一行
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("表头");
row1.createCell(16).setCellValue("表体");
String[] str = {"业务类型", "库存组织", "客户", "部门",
"开票单位", "收货单位", "销售组织", "单据日期", "修订版本号","整单折扣",
"币种", "折本汇率", "金额合计","公司","销售类型", "单据号", "发货库存组织",
"存货编码","主计量单位","数量", "原币无税单价","原币含税单价", "税率",
"币种","图号","产家图号", "原系统编码", "发货公司","收货单位",
"报价计量单位","发货日期","交货日期", "本币折扣额", "整单折扣",
"折本汇率", "单品折扣率", "本币无税金额", "本币无税净价", "报价单位无税净价",
"报价单位无税单价", "报价单位含税净价", "报价单位含税单价",
"原币折扣额", "原币无税金额", "原币无税净价", "原币价税合计", "原币税额",
"原币含税净价", "本币无税单价", "报价单位本币无税净价", "报价单位本币无税单价",
"报价单位本币含税净价", "报价单位本币含税单价", "报价单位数量", "报价计量单位换算率",
"本币价税合计","本币税额", "本币含税净价", "本币含税单价"};
// 创建第二行
Row row2 = sheet.createRow(1);
for (int i = 0; i
row2.createCell(i).setCellValue(str[i]);
}
//表头第一行数据分两大列
sheet.addMergedRegion(region1);
sheet.addMergedRegion(region2);
FileOutputStream out;
try {
int m = 1;
String endname = ".xlsx";
String filename = startname + endname;
File file = new File(filename);
//如果存在同名文件,名称加(n)
while(file.exists()){
filename = startname +"("+m+")"+ endname;
file = new File(filename);
m++;
}
out = new FileOutputStream(file);
wb.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
领取专属 10元无门槛券
私享最新 技术干货