我是靠谱客的博主 想人陪镜子,最近开发中收集的这篇文章主要介绍读取excel文件,执行逻辑后并持续写入到csv文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目当中经常会遇到,需要读取excel文件,然后执行相关逻辑,再写到别的文件当中。
如果文件内容很多,无法一次行写入,那就需要续写,以下就是持续写到csv文件的相关代码。

import com.csvreader.CsvWriter;
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.usermodel.WorkbookFactory;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;

/**
 * Describe:读取excel文件并持续写入到csv文件中
 *
 * @date 2020/4/2 11:47
 */
public class WriteCsv {
  public String readExcel(){
    try {
      //读取xlsx文件路径
      String path = "test.xlsx";
      File saveFile = new File(path);
      // 工作表
      Workbook workbook = WorkbookFactory.create(saveFile);
      // 表个数
      int numberOfSheets = workbook.getNumberOfSheets();

      if (numberOfSheets <= 0){
        return null;
      }

      //处理第一个表,需要多个表的话需要遍历
      Sheet sheet = workbook.getSheetAt(0);
      // 行数
      int rowNumbers = sheet.getLastRowNum() + 1;
      // 读数据,第二行开始读取
      for (int row = 1; row < rowNumbers; row++) {
        Row r = sheet.getRow(row);
        //我们只需要前两列,账号和密码
        String account = r.getCell(0).toString();
        String password = r.getCell(1).toString();
        // 这里执行业务逻辑后
        
        //把数据写到CSV
        writeCsv(account, password);
      }
      return null;
    } catch (Exception e) {
      log.error("读取文件失败:{}", e.getMessage());
    }
    return null;
  }

  public static void writeCsv(String realAccount, String password) {
    //写入的scv文件路径
    String fileName = "tset.csv";
    File saveFile = new File(fileName);
    CsvWriter cs = null;
    //列头
    String[] headers = {"账号", "密码"};
    //判断文件是否存在,不存在则创建
    if (!saveFile.exists()) {
      cs = new CsvWriter(fileName, ',', Charset.forName("GBK"));
    }
    //存在直接往下写数据
    else {
      try {
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName, true)
          , "GBK"), 1024);
        cs = new CsvWriter(out, ',');
      } catch (Exception e) {
        log.error("BufferedWriter out error:{}", e.getMessage());
      }
    }
    try {
      //新文件需要添加一次列表头
      if (!saveFile.exists()) {
        cs.writeRecord(headers);
      }
      StringBuffer write = new StringBuffer();
      //一行数据,用|隔开,符号可自己定义
      write.append(realAccount).append("|");
      write.append(password).append("|");
      String[] content = write.toString().split("\|");
      //写到文件里面
      cs.writeRecord(content, true);
    } catch (Exception e) {
      if (cs != null) {
        cs.close();
      }
    } finally {
      if (cs != null) {
        cs.close();
      }
    }

  }
}

最后

以上就是想人陪镜子为你收集整理的读取excel文件,执行逻辑后并持续写入到csv文件的全部内容,希望文章能够帮你解决读取excel文件,执行逻辑后并持续写入到csv文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部