POI 输出Excel

  1. package cc.dynasoft.struts.action;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Vector;
  7. import org.apache.poi.hssf.usermodel.HSSFCell;
  8. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  9. import org.apache.poi.hssf.usermodel.HSSFFont;
  10. import org.apache.poi.hssf.usermodel.HSSFFooter;
  11. import org.apache.poi.hssf.usermodel.HSSFHeader;
  12. import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
  13. import org.apache.poi.hssf.usermodel.HSSFRow;
  14. import org.apache.poi.hssf.usermodel.HSSFSheet;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  16. import org.apache.poi.hssf.util.HSSFColor;
  17. import org.apache.poi.hssf.util.Region;
  18. import cc.dynasoft.bean.Department;
  19. ///import org.apache.poi.hssf.record.HeaderRecorder;
  20. public class OutputExcel {
  21.  public static boolean outputExcel(ExcelArgs args, List title, List list) {
  22.   try {
  23.    int cellNum = args.getCellNum(); // workbook
  24.    int rowNum = args.getRowNum();
  25.    /**
  26.     * 建立表格设置。
  27.     */
  28.    HSSFWorkbook wb = new HSSFWorkbook(); // create the new Workbook
  29.    HSSFSheet sheet = wb.createSheet(args.getSheetName()); // create
  30.    /**
  31.     * 打印设置
  32.     */
  33.    HSSFPrintSetup hps = sheet.getPrintSetup();
  34.    hps.setPaperSize((short9); // 设置A4纸
  35.    // hps.setLandscape(true); // 将页面设置为横向打印模式
  36.    sheet.setHorizontallyCenter(true); // 设置打印页面为水平居中
  37.    // sheet.setVerticallyCenter(true); // 设置打印页面为垂直居中
  38.    wb.setPrintArea(0"$A$2:$e$" + rowNum + 2);// 打印区域设置.
  39.    /**
  40.     * 设置表的Footer
  41.     */
  42.    HSSFFooter footer = sheet.getFooter();
  43.    // 设置footer的位置和显示的内容
  44.    footer.setCenter("Time:" + HSSFFooter.date());
  45.    footer.setRight("Page " + HSSFFooter.page() + " of "
  46.      + HSSFFooter.numPages());
  47.    /**
  48.     * 设置表的Header
  49.     */
  50.    // 设置header的位置,共有三种位置和相应的显示设置
  51.    HSSFHeader header = sheet.getHeader();
  52.    // header.setRight("Center Header");
  53.    // header.setLeft("Left Header");
  54.    header.setCenter(HSSFHeader.font("Stencil-Normal""Italic")
  55.      + HSSFHeader.fontSize((short30) + args.getHeaderTitle());
  56.    // header.endDoubleUnderline();
  57.    header.startUnderline();
  58.    /**
  59.     * 设置列的宽度
  60.     */
  61.    sheet.setColumnWidth((short2,
  62.      (short) ((30 * 8) / ((double1 / 10)));
  63.    sheet.setColumnWidth((short3,
  64.      (short) ((40 * 8) / ((double1 / 10)));
  65.    sheet.setColumnWidth((short4,
  66.      (short) ((50 * 8) / ((double1 / 20)));
  67.    /**
  68.     * 创建第一行,也就是显示的标题, 可以高置的高度,单元格的格式,颜色,字体等设置. 同时可以合并单元格.
  69.     */
  70.    HSSFRow row0 = sheet.createRow(0); // 创建0行
  71.    row0.setHeight((short0x300); // 设直行的高度.
  72.    HSSFFont font2 = wb.createFont(); // 创建字体格式
  73.    font2.setColor(HSSFFont.SS_NONE); // 设置单元格字体的颜色.
  74.    font2.setFontHeight((short700); // 设置字体大小
  75.    font2.setFontName("Courier New"); // 设置单元格字体
  76.    HSSFCell cell0 = row0.createCell((short0); // 创建0行0列.
  77.    HSSFCellStyle style3 = wb.createCellStyle(); // 创建单元格风格.
  78.    style3.setAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直居中
  79.    style3.setAlignment(HSSFCellStyle.ALIGN_CENTER); // /水平居中
  80.    style3.setFont(font2); // 将字体格式加入到单元格风格当中
  81.    // cell0.setCellType()
  82.    cell0.setCellStyle(style3); // 设置单元格的风格.
  83.    cell0.setCellValue(args.getHeaderTitle()); // 设置单元的内容.
  84.    sheet.addMergedRegion(new Region(0, (short00,
  85.      (short) (cellNum - 1)));// 指定合并区域,前二个参数为开始处X,Y坐标.后二个为结束的坐标.
  86.    /**
  87.     * 设置其它数据 设置风格
  88.     */
  89.    HSSFCellStyle style = wb.createCellStyle();
  90.    style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体
  91.    style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
  92.    style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  93.    style.setLeftBorderColor(HSSFColor.BLACK.index);
  94.    style.setBorderRight(HSSFCellStyle.BORDER_THIN);
  95.    style.setRightBorderColor(HSSFColor.BLACK.index);
  96.    style.setBorderTop(HSSFCellStyle.BORDER_THIN);
  97.    style.setTopBorderColor(HSSFColor.BLACK.index);
  98.    // style.setWrapText(true);//文本区域随内容多少自动调整
  99.    // style.setFillForegroundColor(HSSFColor.LIME.index);
  100.    // style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
  101.    /**
  102.     * 设置风格1
  103.     */
  104.    HSSFCellStyle style1 = wb.createCellStyle();
  105.    style1.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体
  106.    style1.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
  107.    style1.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  108.    style1.setLeftBorderColor(HSSFColor.BLACK.index);
  109.    style1.setBorderRight(HSSFCellStyle.BORDER_THIN);
  110.    style1.setRightBorderColor(HSSFColor.BLACK.index);
  111.    style1.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
  112.    style1.setTopBorderColor(HSSFColor.BLACK.index);
  113.    style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// 最好的设置Pattern
  114.    // 单元格背景的显示模式.
  115.    style1.setFillForegroundColor(new HSSFColor.RED().getIndex()); // 设置单元格背景色;
  116.    style1.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平对齐方式
  117.    // style1.setWrapText(true);//文本区域随内容多少自动调整
  118.    // style.setFillPattern(HSSFCellStyle.//);
  119.    // 设置字体Color,首先创建Font对象,后对font设置,然后做为参数传给style
  120.    HSSFFont font = wb.createFont();
  121.    font.setColor(HSSFFont.SS_NONE);
  122.    // font.setFontHeightInPoints((short)24);
  123.    font.setFontName("Courier New");
  124.    // font.setItalic(true);
  125.    // font.setStrikeout(true);//给字体加上删除线
  126.    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
  127.    style1.setFont(font);
  128.    /**
  129.     * 
  130.     * 设置第零行表格说明行
  131.     * 
  132.     * 
  133.     * 
  134.     */
  135.    HSSFRow row1 = sheet.createRow((short1);
  136.    for (int j = 0; j < cellNum; j++) {
  137.     HSSFCell cell = row1.createCell((short) j);
  138.     cell.setCellValue((String) title.get(j));
  139.     cell.setCellStyle(style1);
  140.    }
  141.    // style.setFillPattern(HSSFCellStyle.NO_FILL);
  142.    /**
  143.     * 设置表的内容主体
  144.     */
  145.    Iterator iter = list.iterator();
  146.    for (int i = 2; iter.hasNext(); i++) {
  147.     Department dep = (Department) iter.next();
  148.     HSSFRow row = sheet.createRow((short) i);
  149.     HSSFCell cell5 = row.createCell((short0);
  150.     HSSFCell cell1 = row.createCell((short1);
  151.     HSSFCell cell2 = row.createCell((short2);
  152.     HSSFCell cell3 = row.createCell((short3);
  153.     HSSFCell cell4 = row.createCell((short4);
  154.     cell5.setCellValue(dep.getId());
  155.     cell5.setCellStyle(style);
  156.     cell1.setCellValue(dep.getParentId());
  157.     cell1.setCellStyle(style);
  158.     cell2.setCellValue(dep.getName());
  159.     cell2.setCellStyle(style);
  160.     cell3.setCellValue(dep.getDescription());
  161.     cell3.setCellStyle(style);
  162.     cell4.setCellValue(dep.getImagePath());
  163.     cell4.setCellStyle(style);
  164.    }
  165.    // Write the output to a file}
  166.    // FileOutputStream fileOut = new
  167.    // FileOutputStream(args.getPath()+args.getFileName());
  168.    /**
  169.     * 对文件进行输出操作。
  170.     */
  171.    FileOutputStream fileOut = new FileOutputStream(args
  172.      .getPathAndName());
  173.    wb.write(fileOut);
  174.    // fileOut.close();
  175.   } catch (IOException ex) {
  176.    ex.printStackTrace();
  177.   } catch (Exception ex) {
  178.    ex.printStackTrace();
  179.   }
  180.   return true;
  181.  }
  182. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用JavaPOI库导出Excel文件的步骤: 1. 首先,需要在项目中引入POI的依赖,可以通过Maven或手动下载jar包的方式引入。 2. 创建一个工作簿对象,可以通过HSSFWorkbook或XSSFWorkbook类来创建,前者用于创建xls格式的Excel文件,后者用于创建xlsx格式的Excel文件。 3. 创建一个工作表对象,可以通过工作簿对象的createSheet()方法来创建。 4. 创建行和单元格对象,可以通过工作表对象的createRow()和createCell()方法来创建。 5. 设置单元格的值,可以通过单元格对象的setCellValue()方法来设置。 6. 将工作簿对象写入到输出流中,可以通过工作簿对象的write()方法来实现。 以下是一个简单的示例代码,用于将数据导出到Excel文件中: ```java import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; public class ExcelExporter { public static void export() throws IOException { // 创建工作簿对象 Workbook workbook = new HSSFWorkbook(); // 创建工作表对象 Sheet sheet = workbook.createSheet("Sheet1"); // 创建行对象 Row row = sheet.createRow(0); // 创建单元格对象 Cell cell = row.createCell(0); // 设置单元格的值 cell.setCellValue("Hello, World!"); // 将工作簿对象写入到输出流中 FileOutputStream fos = new FileOutputStream("output.xls"); workbook.write(fos); fos.close(); } } ``` 调用export()方法即可将数据导出到名为output.xls的Excel文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值