Java- 导入导出csv文件.

原博:https://www.cnblogs.com/hanfengyeqiao/p/9471694.html#4221516

因为与原博传入的数据形式不同,所以成为了梯形输出.需要自己进行输出整理修改.
导出.

@RequestMapping(value = "/export")
	public String getExport(String arr) throws SQLException {
		
		/*arr 格式:{index:1,time:2018-02-27 00:00:00····},{},{}*/
		arr=arr.substring(arr.indexOf("{")+1,arr.length());//去掉前面多余的
		arr=arr.replace("{", "");
		String[] split = arr.split(",|}");
		String key,kvalue;
		List<Map<String, String>> exportData = new ArrayList<Map<String, String>>();  
		Map<String, String> row1 = null;  
		
		String fristFile = split[0].substring(0, split[0].indexOf(":"));//得到第一个字段.
		for (int i = 0 ;i< split.length;i++) {
			key=split[i].substring(0, split[i].indexOf(":"));
			kvalue =split[i].substring(split[i].indexOf(":")+1, split[i].length());
			
			if(key.equals(fristFile)) {
				if(i != 0) {exportData.add(row1);}  
				row1 = new LinkedHashMap<String, String>(); 
			}
			row1.put(key, kvalue);
			}
		exportData.add(row1);  	
		 LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();  
         for (int i = 0 ;i< split.length;i++) {
        	 key=split[i].substring(0, split[i].indexOf(":"));
        	 kvalue =split[i].substring(split[i].indexOf(":")+1, split[i].length());
        	 if(!map.containsKey(key)) {
        		 map.put(key,key);  
        	 }
         }
        String outPutPath=initializationFileService.getProjectDataFile().getPath();
        String fileName ="文件导出"+ new SimpleDateFormat("yyyyMMddHHmm'.txt'").format(new Date());
        ExportCSV.createCSVFile(exportData, map, outPutPath, fileName);
        System.err.println("下载到了:"+outPutPath);
        return outPutPath;
	}

导入.

@RequestMapping(value = "/acquire",method=RequestMethod.POST)
	public LinkedList<LtePRBAnalysisFile21Model> getAcquire(HttpServletRequest request, @RequestParam("files") MultipartFile[] files) throws SQLException, IOException {
		System.out.println("1getContentType:"+files[0].getContentType()); //text/plain
		
		String originalFilename = files[0].getOriginalFilename();
		File saveFile = new File("D:\\" + originalFilename);
		String absolutePath = saveFile.getAbsolutePath();// 文件绝对路径
		byte[] bytes = files[0].getBytes();
		Path path = Paths.get(saveFile.getPath());
		Files.write(path, bytes);
		//读文件.
		BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(absolutePath),"GB2312"));
		  LinkedList<String[]> valuesArr=new LinkedList<String[]>();
		  LinkedList<LtePRBAnalysisFile21Model> list=new LinkedList<LtePRBAnalysisFile21Model>();
		  int i=0;
		  CsvReader csvReader = new CsvReader(br);
		  String[] headers=null;
		  while (csvReader.readRecord()) {
			  i++;
			  if(i==1) {
				  headers=csvReader.getValues();
			  }else {
				  String[] values = csvReader.getValues();
				  valuesArr.add(values);
			}
		  }
		//  System.out.println(valuesArr.size()+"=size =="+i+"行");
		  String formDate = originalFilename.substring(0, originalFilename.indexOf("."));
		  
		  list=getCsvQueryService.AcquireQuery(list, formDate, headers, valuesArr);
		 /* for (LtePRBAnalysisFile21Model LtePRBAnalysisFile21Model : list) {
			System.out.println(LtePRBAnalysisFile21Model.toString());
		}*/
		  return list;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值