package com.hzp.test;import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter;import java.io.IOException; import java.io.InputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.nio.Buffer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Workbook; public class QQQQ { /** * @description: 根据excel文件生成对应的json字符串 * @return * @throws FileNotFoundException */ public static String createJson() throws FileNotFoundException { InputStream is = new FileInputStream("d://123456.XLS"); StringBuffer buffer = new StringBuffer(); try { Workbook workbook = new HSSFWorkbook(is); HSSFSheet sheet = (HSSFSheet) workbook.getSheetAt(0); //创建TXT文本 FileWriter ff= new FileWriter("f://1.txt"); String key = ""; String value = ""; buffer.append("["); for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) { HSSFRow row = sheet.getRow(i); for(int j=0;j<row.getPhysicalNumberOfCells();j++){ HSSFCell cell = row.getCell(j); //向创建的TXT文本写出xls文件中的内容 ff.write(String.valueOf(i+"---"+row.getPhysicalNumberOfCells()+" "+" ")); if(i==0){ if(j==0){ key = cell.getStringCellValue(); } if(j==1){ value = cell.getStringCellValue(); } } else{ if(j==0){ buffer.append("{\"" + key + "\"" + ":" + "\"" + sheet.getRow(i) + "\"" + ","); } if(j==0){ buffer.append("\"" + value + "\"" + ":" + "\"" + row.getCell(j) + "\"}"); } } } if(sheet.getPhysicalNumberOfRows()-1!=i && i!=0){ buffer.append(","); } buffer.append("\r"); } buffer.append("]"); ff.flush(); ff.close(); } catch (IOException e) { System.out.println("出现异常"); e.printStackTrace(); } return buffer.toString(); } /** * 获取当前单元格内容 * */ private static String getCellValue(Cell cell){ String value = ""; if(cell!=null){ switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: if(HSSFDateUtil.isCellDateFormatted(cell)){ //日期类型 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()); value = sdf.format(date); }else{ Integer data = (int) cell.getNumericCellValue(); value = data.toString(); } break; case Cell.CELL_TYPE_STRING: value = cell.getStringCellValue(); break; case Cell.CELL_TYPE_BOOLEAN: Boolean data = cell.getBooleanCellValue(); value = data.toString(); break; case Cell.CELL_TYPE_ERROR: System.out.println("单元格内容出现错误"); break; case Cell.CELL_TYPE_FORMULA: value = String.valueOf(cell.getNumericCellValue()); if (value.equals("NaN")) { // 如果获取的数据值非法,就将其装换为对应的字符串 value = cell.getStringCellValue().toString(); } break; case Cell.CELL_TYPE_BLANK: System.out.println("单元格内容 为空值 "); break; default : value = cell.getStringCellValue().toString(); break; } } return value; } /** * @description: 将生成的字符串输出到一个文件中 * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String str = createJson(); OutputStream os = new FileOutputStream("D://1.json"); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); ObjectOutputStream oos = null; try { bw.write(str); System.out.println("json文件写入完成"); } catch (IOException e) { e.printStackTrace(); }finally{ if(bw!=null){ bw.close(); } if(os!=null){ os.close(); } } } }
添加回答
举报
0/150
提交
取消