当前位置: 首页 > news >正文

文件类:如何将excel文件转为csv文件(且保留时间格式)?

最近有个场景,在ftp服务器上,读取csv文件并入库,但是客户提供的一部分文件却是xls文件,就得搞个将excel转为csv文件的方法,话不多说直接开干。

方法

    public static void convertExcelToCSV(String excelFilePath, String csvFilePath) throws IOException {FileInputStream inputStream = new FileInputStream(excelFilePath);Workbook workbook = getWorkbook(inputStream, excelFilePath);inputStream.close();FileWriter writer = new FileWriter(csvFilePath);for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {Sheet sheet = workbook.getSheetAt(sheetIndex);Iterator<Row> rowIterator = sheet.iterator();while (rowIterator.hasNext()) {Row row = rowIterator.next();Iterator<Cell> cellIterator = row.cellIterator();StringBuilder stringBuilder = new StringBuilder();while (cellIterator.hasNext()) {Cell cell = cellIterator.next();stringBuilder.append(getCellValue(cell));if (cellIterator.hasNext()) {stringBuilder.append(",");}}writer.write(stringBuilder.toString() + "\n");}if (sheetIndex < workbook.getNumberOfSheets() - 1) {writer.write("\n"); // 在不同工作表之间添加一个空行}}writer.flush();writer.close();workbook.close();}private static Workbook getWorkbook(FileInputStream inputStream, String excelFilePath) throws IOException {Workbook workbook = null;if (excelFilePath.endsWith("xlsx")) {workbook = new XSSFWorkbook(inputStream);} else if (excelFilePath.endsWith("xls")) {workbook = new HSSFWorkbook(inputStream);} else {throw new IllegalArgumentException("The specified file is not an Excel file");}return workbook;}private static String getCellValue(Cell cell) {//DataFormatter formatter = new DataFormatter();String formatPattern = "yyyy-MM-dd HH:mm:ss"; // 自定义日期时间格式//FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();switch (cell.getCellType()) {case STRING:return cell.getRichStringCellValue().getString();case NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {Date date = cell.getDateCellValue();DateFormat dateFormat = new SimpleDateFormat(formatPattern);return dateFormat.format(date);} else {return Double.toString(cell.getNumericCellValue());}case BOOLEAN:return Boolean.toString(cell.getBooleanCellValue());case FORMULA:return cell.getCellFormula();default:return "";}}

测试

    public static void main(String[] args) {String excelFilePath = "D:\\我是excel文件.xlsx";String csvFilePath = "D:\\我是csv文件.csv";try {convertExcelToCSV(excelFilePath, csvFilePath);System.out.println("Excel file converted to CSV successfully!");} catch (IOException e) {e.printStackTrace();}}

以上为整合保留时间格式需求的全部代码,亲测非常好用!

http://www.lryc.cn/news/397527.html

相关文章:

  • FiddlerScript Rules修改-更改发包中的cookie
  • 直升机停机坪的H代表什么
  • hyperworks软件许可优化解决方案
  • 四川赤橙宏海商务信息咨询有限公司抖音电商服务靠谱吗?
  • 鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥派生(C/C++)】
  • 【ARMv8/v9 GIC 系列 6 -- 中断优先级详细介绍】
  • 【CORS 报错】跨域请求问题:CORS 多种环境下的解决方案
  • 【Scrapy】深入了解 Scrapy 中间件中的 process_spider_output 方法
  • GigE Vision GVCP/GVSP
  • 结合C++智能指针聊聊观察者模式
  • 【React】监听浏览器返回事件
  • python用selenium网页模拟时无法定位元素解决方法1
  • css中文字书写方向
  • 医学王者刊!影响因子自创刊只增不减,3区跃升1区,国人发文占比6成!
  • 数据建设实践之大数据平台(五)
  • js原型和类---prototype,__proto__,new,class
  • bevfomer self-att to transformer to tensorrt
  • Day01-ElasticSearch的单点部署,集群部署,多实例部署,es-head和postman环境搭建
  • Linux--DHCP原理与配置
  • Hi3861 OpenHarmony嵌入式应用入门--华为 IoTDA 设备接入
  • Pytorch张量
  • 医院同步时钟系统提供可靠的时间支持
  • 【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组② | 11.3 - 11.5
  • 无人直播赚钱的底层逻辑是什么?一文揭晓!
  • d3dcompiler_43.dll文件是什么?如何快速有效的解决d3dcompiler_43.dll文件丢失问题
  • Git分支结构
  • 测试流程规范建设
  • 启英泰伦CI13LC系列:打造AI语音芯片性价比之王!
  • headerpwn:一款针对服务器响应与HTTP Header的模糊测试工具
  • 2021 RoboCom 世界机器人开发者大赛-本科组(复赛):拼题A打卡奖励