概述
项目当中经常会遇到,需要读取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文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复