首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

源码:实现导出Excel数据

业务描述:客户要求将系统中的数据按照指定的模板导出到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);

‍‍//设置列宽

‍‍‍s‍heet.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();

‍‍}

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180519G17Q9V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券