微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > 系统帮助

java中如何导出excel

时间:2024-11-23 06:39:54   

大家好,今天Win10系统之家小编给大家分享「java中如何导出excel」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

中国平安陆金所官方版系列软件最新版本下载

1.怎么用java实现导出excel


  /**
 * @author liuwu
 * Excel的导入与导出
 */
@SuppressWarnings({ "unchecked" })
public class ExcelOperate {
 /**
  * @author liuwu
  * 这是一个通用的方法,利用了JAVA的反射机制,
  * 可以将放置在JAVA集合中并且符合一定条件的数据以EXCEL的形式输出到指定IO设备上
  * @param title 表格标题名
  * @param headers 表格属性列名数组
  * @param dataset 需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。
  *  此方法支持的 javabean属性【数据类型有java基本数据类型及String,Date,byte[](图片转成字节码)】
  * @param out 与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中
  * @param pattern  如果有时间数据,设定输出格式。默认为"yyy-MM-dd"
  * @throws IOException 
  */
 public static void exportExcel(String title, String[] headers,Collection<?> dataset, OutputStream out, String pattern) throws IOException {
 // 声明一个工作薄
 HSSFWorkbook workbook = new HSSFWorkbook();
 // 生成一个表格
 HSSFSheet sheet = workbook.createSheet(title);
 // 设置表格默认列宽度为15个字节
 sheet.setDefaultColumnWidth((short) 20);
 // 生成一个样式
 HSSFCellStyle style = workbook.createCellStyle();
 // 设置这些样式
 style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
 style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
 style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
 style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
 style.setBorderRight(HSSFCellStyle.BORDER_THIN);
 style.setBorderTop(HSSFCellStyle.BORDER_THIN);
 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
 // 生成一个字体
 HSSFFont font = workbook.createFont();
 font.setColor(HSSFColor.VIOLET.index);
 font.setFontHeightInPoints((short) 12);
 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
 // 把字体应用到当前的样式
 style.setFont(font);
 // 生成并设置另一个样式
 HSSFCellStyle style2 = workbook.createCellStyle();
 style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
 style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
 style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
 style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
 style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
 style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
 style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
 style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
 // 生成另一个字体
 HSSFFont font2 = workbook.createFont();
 font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
 // 把字体应用到当前的样式
 style2.setFont(font2);
 // 产生表格标题行
 HSSFRow row = sheet.createRow(0);
 for (short i = 0; i < headers.length; i++) {
 HSSFCell cell = row.createCell(i);
 cell.setCellStyle(style);
 HSSFRichTextString text = new HSSFRichTextString(headers[i]);
 cell.setCellValue(text);
 }
 // 遍历集合数据,产生数据行
 Iterator<?> it = dataset.iterator();
 int index = 0;
 while (it.hasNext()) {
 index++;
 row = sheet.createRow(index);
 Object t =  it.next();
 // 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
 Field[] fields = t.getClass().getDeclaredFields(); 
 for (short i = 0; i < fields.length; i++) {
 HSSFCell cell = row.createCell(i);
 cell.setCellStyle(style2);
 Field field = fields[i];
 String fieldName = field.getName();
 String getMethodName = "get"
 + fieldName.substring(0, 1).toUpperCase()
 + fieldName.substring(1);//注意 实体get Set不要自己改名字不然反射会有问题
 try {
 Class tCls = t.getClass();
 Method getMethod = tCls.getMethod(getMethodName,new Class[] {});
 Object value = getMethod.invoke(t, new Object[] {});
 HSSFRichTextString richString = new HSSFRichTextString(value.toString());
 HSSFFont font3 = workbook.createFont();
 font3.setColor(HSSFColor.BLUE.index);
 richString.applyFont(font3);
 cell.setCellValue(richString);
 } catch (SecurityException e) {
 e.printStackTrace();
 e=null;
 } catch (NoSuchMethodException e) {
 e.printStackTrace();
 e=null;
 } catch (IllegalArgumentException e) {
 e.printStackTrace();
 e=null;
 } catch (IllegalAccessException e) {
 e.printStackTrace();
 e=null;
 } catch (InvocationTargetException e) {
 e.printStackTrace();
 e=null;
 } finally {
 // 清理资源
 }
 }
 }
 try {
 workbook.write(out);
 } catch (IOException e) {
 e.printStackTrace();
 e=null;
 }
 }
}

2.java 通用导出一个excel


  java导出Excel通用方法,只需要一个list 集合。
package oa.common.utils;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import java.lang.reflect.Field;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/***
 * @author lsf
 */
public class ExportExcel {
 /***************************************************************************
 * @param fileName EXCEL文件名称
 * @param listTitle EXCEL文件第一行列标题集合
 * @param listContent EXCEL文件正文数据集合
 * @return
 */
 public final static String exportExcel(String fileName,String[] Title, List<Object> listContent) {
 String result="系统提示:Excel文件导出成功!"; 
 // 以下开始输出到EXCEL
 try { 
 //定义输出流,以便打开保存对话框______________________begin
 HttpServletResponse response=ServletActionContext.getResponse();
 OutputStream os = response.getOutputStream();// 取得输出流 
 response.reset();// 清空输出流 
 response.setHeader("Content-disposition", "attachment; filename="+ new String(fileName.getBytes("GB2312"),"ISO8859-1"));
// 设定输出文件头 
 response.setContentType("application/msexcel");// 定义输出类型 
 //定义输出流,以便打开保存对话框_______________________end
 /** **********创建工作簿************ */
 WritableWorkbook workbook = Workbook.createWorkbook(os);
 /** **********创建工作表************ */
 WritableSheet sheet = workbook.createSheet("Sheet1", 0);
 /** **********设置纵横打印(默认为纵打)、打印纸***************** */
 jxl.SheetSettings sheetset = sheet.getSettings();
 sheetset.setProtected(false);
/** ************设置单元格字体************** */
 WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
 WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);
 /** ************以下设置三种单元格样式,灵活备用************ */
 // 用于标题居中
 WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);
 wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
 wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
 wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐
 wcf_center.setWrap(false); // 文字是否换行
 
 // 用于正文居左
 WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
 wcf_left.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条
 wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
 wcf_left.setAlignment(Alignment.LEFT); // 文字水平对齐
 wcf_left.setWrap(false); // 文字是否换行 
/** ***************以下是EXCEL开头大标题,暂时省略********************* */
 //sheet.mergeCells(0, 0, colWidth, 0);
 //sheet.addCell(new Label(0, 0, "XX报表", wcf_center));
 /** ***************以下是EXCEL第一行列标题********************* */
 for (int i = 0; i < Title.length; i++) {
 sheet.addCell(new Label(i, 0,Title[i],wcf_center));
 } 
 /** ***************以下是EXCEL正文数据********************* */
 Field[] fields=null;
 int i=1;
 for(Object obj:listContent){
 fields=obj.getClass().getDeclaredFields();
 int j=0;
 for(Field v:fields){
 v.setAccessible(true);
 Object va=v.get(obj);
 if(va==null){
 va="";
 }
 sheet.addCell(new Label(j, i,va.toString(),wcf_left));
 j++;
 }
 i++;
 }
 /** **********将以上缓存中的内容写到EXCEL文件中******** */
 workbook.write();
 /** *********关闭文件************* */
 workbook.close(); 
 } catch (Exception e) {
 result="系统提示:Excel文件导出失败,原因:"+ e.toString();
 System.out.println(result); 
 e.printStackTrace();
 }
 return result;
 }
}
测试:
/**
 * 导出excel
 * @return
 */
public String excelPage(){
 ExportExcel excel=new ExportExcel();
 String str="";
 try {
 str = new String(getHTTP.getRequest().getParameter("wineOrg.orgName").getBytes("iso8859-1"),"UTF-8");
 } catch (UnsupportedEncodingException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 wineOrg.setOrgName(str);
 List<Object> li=service.exportExcel(wineOrg);
 String[] Title={"机构ID","会员编号","类别","名称","省ID","省名称","城市ID","城市名称","详细地址","联系人","性别","联系手机","联系电话","传真","邮箱","QQ","生日","积分","客户等级","现金账户余额","结算方式","客户类型","购买次数","购买支数","创建人ID","创建人姓名","create_time","del","STS","备注","负责人ID","负责人姓名","审核标识","审核人ID ","审核人姓名","审核日期","分配人ID","分配人姓名","分配日期","修改人ID","修改人姓名 ","修改时间"};
 excel.exportExcel("客户资料信息.xls",Title, li); 
 return SUCCESS;
}

3.java如何另存导出Excel


  1./**
  * 出险信息导出到excel(fc)
  * @param mapping
  * @param form
  * @param request
  * @param response
  * @throws IOException
  */
  public void exportActoExcel(ActionMapping mapping, ActionForm form ,
  HttpServletRequest request,HttpServletResponse response) throws IOException {
  ActionErrors errors = new ActionErrors();
  AcExcelBusi acBusi = new AcExcelBusi();
  AccidentRecordForm arForm= (AccidentRecordForm) form;
  AccidentRecordBusi arBusi = new AccidentRecordBusi();
  // ////查询条件
  FwUsers sessUser = (FwUsers)request.getSession().getAttribute(ConstValues.SESS_USER_MANAGE);
  Map<String,Object> cisMap = arBusi.getTodoPageList(arForm,sessUser,errors);
  List AcList = null;// 当页的记录
  if (null != cisMap) {
  AcList = (List) cisMap.get("list");
  }
  
  //导出excel的路径、文件名
  String uuid = UUID.create("exp");
  String path = request.getSession().getServletContext().getRealPath("/") + ConstValues.EXP_PATH_EXCEL + uuid + ".xls";
  acBusi.exprotAcExcel(AcList, path,request);
  
  response.sendRedirect("stdownload.jsp?path=" + path );
  
  }
  2./**
  * 导出出险信息 fc
  * 
  * @param jzForm
  *            查询条件
  * @param sessionUser
  *            当前登录session用户
  * @param errors
  *            Action错误
  * @return
  */
  public void exprotAcExcel(List list, String path,HttpServletRequest request) {
  
  try {
  WritableWorkbook workbook = Workbook.createWorkbook(new File(path));// 创建工作簿(filePos为excel文件的路径)
  WritableSheet sheet = workbook.createSheet("出险信息", 0);// 创建工作页
  
  // 内容(居中)单元格样式
  WritableCellFormat contentStyle = new WritableCellFormat(); //
  contentStyle.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
  contentStyle.setBorder(jxl.format.Border.ALL,
  jxl.format.BorderLineStyle.THIN); // 设置边框
  
  // 一级标题单元格样式
  WritableFont wf1 = new WritableFont(WritableFont.ARIAL, 15,
  WritableFont.BOLD, false); // 定义格式 字体 下划线 斜体 粗体 颜色
  WritableCellFormat titleStyle1 = new WritableCellFormat(wf1); //
  titleStyle1.setBackground(jxl.format.Colour.GREEN); // 设置单元格的背景颜色
  titleStyle1.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
  titleStyle1.setBorder(jxl.format.Border.ALL,
  jxl.format.BorderLineStyle.THIN); // 设置边框
  // 二级标题单元格样式
  WritableFont wf2 = new WritableFont(WritableFont.ARIAL, 11,
  WritableFont.BOLD, false); // 定义格式 字体 下划线 斜体 粗体 颜色
  WritableCellFormat titleStyle2 = new WritableCellFormat(wf2); //
  titleStyle2.setBackground(jxl.format.Colour.GREY_25_PERCENT); // 设置单元格的背景颜色
  titleStyle2.setAlignment(jxl.format.Alignment.CENTRE); // 设置水平对齐方式
  titleStyle2
  .setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 设置垂直对齐方式
  titleStyle2.setBorder(jxl.format.Border.ALL,
  jxl.format.BorderLineStyle.THIN); // 设置边框
  
  WritableCellFormat titleStyle3 = new WritableCellFormat(wf1); //
  titleStyle3.setBackground(jxl.format.Colour.BRIGHT_GREEN); // 设置单元格的背景颜色
  titleStyle3.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
  titleStyle3.setBorder(jxl.format.Border.ALL,
  jxl.format.BorderLineStyle.THIN); // 设置边框
  
  // 设置冻结单元格
  sheet.getSettings().setVerticalFreeze(2);
  sheet.getSettings().setHorizontalFreeze(5);
  
  sheet.setColumnView(0, 8); // 设置列的宽度
  sheet.setColumnView(1, 10); // 设置列的宽度
  
  sheet.setRowView(0, 0);
  
  sheet.addCell(new Label(0, 0, "hysj5800294*#", titleStyle1));// 标题
  sheet.addCell(new Label(0, 1, "出险信息 ", titleStyle2));// 标题
  sheet.mergeCells(0, 2, 33, 2); // 合并单元格
  sheet.addCell(new Label(0, 2, "出险信息 ", titleStyle1));// 标题
  
  sheet.addCell(new Label(0, 3, "序号", titleStyle2));// 往单元格中填写数据
  sheet.addCell(new Label(1, 3, "省内/省外", titleStyle2));// 往单元格中填写数据
  
  if (list != null && list.size() > 0) {
  for (int i = 0; i < list.size(); i++) {
  sheet.setRowView(i + 3, 300); // 设置行高
  //转换数据信息
  //Object[] obj = (Object[]) list.get(i);
  AccidentRecord ar = (AccidentRecord) list.get(i);
  
  sheet.addCell(new Label(0, i + 4, String.valueOf(i + 1),contentStyle));// 往单元格中填写数据 序号
  sheet.addCell(new Label(1, i + 4, ar.getLicenceProvince().toString(),contentStyle));//  省内/省外
  }
   
  }
  workbook.write();// 书写到工作簿
  workbook.close();// 关闭工作簿,输出完成
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  }
  3.功能可以实现,可以到处,点击下载确定。
  
  4.打开已经下载的excel,如图显示结果。得到想要的结构。

以上就是关于「java中如何导出excel」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

Win10系统之家独家♀使★用!』

相关文章

  • java中如何导出excel

    java中如何导出excel

    1.怎么用java实现导出excel/***@authorliuwu*Excel的导入与导出*/@SuppressWarnings({"unchecked"})publicclassExcelOperate{/***@authorliuwu*这是一个通用的方法,利用了JAVA的反射机制,*可以将放置在JAVA集合中并...
  • excel中如何求标准差

    excel中如何求标准差

    1.如何在EXCEL中算方差和标准差一、首先,打开Excel程序。然后在Excel中新建一张空白表格。二、然后,在摆个中输入好要计算方差和标准差知的数据。三、然后,选择两个空白单元格,备注标准差和方差的名称,再点击标准差相邻一...
  • excel如何导出pdf

    excel如何导出pdf

    1.如何把excel存成pdf格式方法一:利用MicrosoftofficeExcel软件直接将excel文件另存为pdf文件。但是,这种方法适合于2007及以上版本,且excel软件中安装了生成pdf文件的加载项,如果条件不满足,则这种方法无法有效执行。...
  • 如何导入到excel表格中

    如何导入到excel表格中

    1.教你怎样将Word表格导入到Excel中1.在excel里复制要导入Word文档的表格。2.打开Word文档粘贴复制的表格,点击Word粘贴的倒三角形,在打开列表里选择“选择性粘贴”。3.打开选择性粘贴后,在选择性粘贴页面选择excel表格。...