Excel中的数据转换为JSON格式

Excel中的数据转换为JSON格式

需求背景

在日常开发操作中,偶尔会有需要修复的脏数据。一般现场的用户会把需要修改的文件制作成Excel表格,然后开发人员处理这些数据一般使用postman等工具调用接口进行修复。接口入参一般为JSON格式。对于少量数据可以直接手动转换,但对于大量数据,手动转换时间成本较高,且容易出错,所以开发一个Excel转JSON的小工具。

开发流程

  1. 读取Excel文件内容,首行​作为key,其余每行作为value
  2. 对key和value按照JSON的格式进行拼接
  3. 以String格式写入.txt文件

代码实现

/*** excel中的数据转换为JSON格式 手动写入excel地址,直接在本地跑方法*/public static StringBuilder excelByPath() throws Exception {StringBuilder excelToJson = new StringBuilder();//excel文件地址File file = new File("C:\\Users\\xxx\\Desktop\\test.xlsx");if (!file.exists()){throw new Exception("文件不存在!");}InputStream in = new FileInputStream(file);// 读取整个ExcelXSSFWorkbook sheets = new XSSFWorkbook(in);// 获取第一个表单SheetXSSFSheet sheetAt = sheets.getSheetAt(0);//默认第一行为标题行,i = 0XSSFRow titleRow = sheetAt.getRow(0);// 循环获取每一行数据for (int i = 1; i < sheetAt.getPhysicalNumberOfRows(); i++) {XSSFRow row = sheetAt.getRow(i);// 读取每一格内容StringBuilder sbCell = new StringBuilder();StringBuilder sbTitle = new StringBuilder();StringBuilder sbJson = new StringBuilder();for (int index = 0; index < row.getPhysicalNumberOfCells(); index++) {//titleXSSFCell titleCell = titleRow.getCell(index);XSSFCell cell = row.getCell(index);titleCell.setCellType(CellType.STRING);cell.setCellType(CellType.STRING);if (cell.getStringCellValue().equals("")) {continue;}sbTitle.append(titleCell);sbCell.append(cell);if (index == row.getPhysicalNumberOfCells() -1) {sbJson.append("\t" + "\""+ titleCell + "\":" + "\"" + cell + "\"" );} else {sbJson.append("\t" + "\""+ titleCell + "\":" + "\"" + cell + "\",\n" );}}if (i == 1) {excelToJson.append("[{\n" + sbJson + "\n},");} else if (i == sheetAt.getPhysicalNumberOfRows()-1) {excelToJson.append("{\n" + sbJson + "\n}\n]");} else {excelToJson.append("{\n" + sbJson + "\n},");}}return excelToJson;}
 /***     输出字符串另存为txt文件*/public static void saveAsTxt() throws Exception {//文件保存地址File outFile = new File("C:\\Users\\xxx\\Desktop\\" + DateUtils.getCurrentTime(DATETIME_FORMAT_STR) + ".txt");//检查文件是否存在,如果存在退出,注释掉这一段将实现重写覆盖if (outFile.exists()) {System.out.println("File already exists!");System.exit(1);}//如果不存在则写入文件// 制定编码方式为 UTF-8PrintWriter printWriter = new PrintWriter(outFile, "UTF-8");StringBuilder stringBuilder = excelByPath();printWriter.print(stringBuilder);//释放资源printWriter.close();}

程序扩展

可以写一个前端页面,在页面弹窗选择文件,然后导出.txt文件到默认地址,这样就不用手动修改路径了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部