使用java将数据写入Excel中,并根据数据数量分在不同的sheet中

使用java将数据写入Excel中,并根据数据数量分在不同的sheet中

今天任务是将数据写入Excel中(数据直接写在main函数里),使用的开发平台是IDEA。目前的需求是将有限数量的数据,比如13个数据依次写入Excel中,每满五个就自动建一个sheet存入。

引入jar包

因为我们用的是IDEA的开发环境,无需导入外部jar包,只需要将jxl包的代码直接写入pom.xml中即可:


    <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.12</version>
        </dependency>
    ```
    
      
    

## JAVA实现类的编写:

    
package com.bjsd.apps.bidding.service.impl;
 
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
 
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
 
public class ExcelOperaation {
  public void writeExcel(String path, List<String[]> list, String sheet, String[] title) {
    try {
      // 创建Excel工作薄
      WritableWorkbook wwb = null;
      // 新建立一个jxl文件
      OutputStream os = new FileOutputStream(path);
      wwb = Workbook.createWorkbook(os);
      // 添加第一个工作表并设置第一个Sheet的名字
      WritableSheet sheets = wwb.createSheet(sheet, 1);
      Label label;
      for (int i = 0; i < title.length; i++) {
        // Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z
        // 在Label对象的子对象中指明单元格的位置和内容
        // label = new Label(i, 0, title[i]);
        label = new Label(i, 0, title[i], getHeader());
        // 设置列宽
        sheets.setColumnView(i, 20);
        // sheets.setColumnView(4, 100);
        // 将定义好的单元格添加到工作表中
        sheets.addCell(label);
      }
 
      // 设置单元格属性
      WritableCellFormat wc = new WritableCellFormat();
      // 设置居中
      wc.setAlignment(Alignment.CENTRE);
      // 设置边框线
      wc.setBorder(Border.ALL, BorderLineStyle.THIN);
 
      for (int i = 0; i < list.size(); i++) {
        String[] arrData = list.get(i);
        for (int j = 0; j < arrData.length; j++) {
          // 向特定单元格写入数据
          // sheets.setColumnView(j, 20);
          label = new Label(j, 1 + i, arrData[j], wc);
          sheets.addCell(label);
        }
      }
      // 写入数据
      wwb.write();
      // 关闭文件
      wwb.close();
    }
    catch (Exception e) {
      e.printStackTrace();
      return;
    }
  }
 
  public static WritableCellFormat getHeader() {
    // 定义字体
    WritableFont font = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD);
    try {
      // 黑色字体
      font.setColour(jxl.format.Colour.BLACK);
    }
    catch (WriteException e1) {
      e1.printStackTrace();
    }
    WritableCellFormat format = new WritableCellFormat(font);
    try {
      // 左右居中
      format.setAlignment(jxl.format.Alignment.CENTRE);
      // 上下居中
      format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
      // 黑色边框
      format.setBorder(Border.ALL, BorderLineStyle.THIN, jxl.format.Colour.BLACK);
      // 黄色背景
      format.setBackground(jxl.format.Colour.YELLOW);
    }
    catch (WriteException e) {
      e.printStackTrace();
    }
    return format;
  }
 
  public static void main(String args[]) {
    ExcelOperaation excel = new ExcelOperaation();
    // 文件保存路径
    String path = "E:/test.xlsx";
    // 准备测试数据
    List<String[]> list = new ArrayList<>();
    for (int i = 0; i < 5; i++) {
      String content[] = { i + "", "hello" };
      list.add(content);
    }
 
    // sheet页名称
    String sheet = "hhh";
    // 列名
    String title[] = { "id", "content" };
    excel.writeExcel(path, list, sheet, title);
  }
}

运行代码,在E盘得到一个名为excel文档,里面存放了五行两列的数据,sheet名为:hhh:

使用java将数据写入Excel中,并根据数据数量分在不同的sheet中
接下来我们的任务就是添加更多的数据,并且根据数据数量就数据存放在不同的sheet(sheet名自定义)中,运用代码:int totle = result.size();//获取List集合的size int mus = 5;//每个工作表格最多存储5条数据(注:excel表格一个工作表可以存储65536条) int avg = totle / mus; for (int i = 0; i < avg + 1; i++) { WritableSheet ws = wwb.createSheet("列表" + (i + 1), i); //创建一个可写入的工作表

该循环代码可以实现每5个数据重新建一个新的sheet,直到数据读取结束,从而实现我们的要求。(sheet名可自定义)