亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java如何實現CSV文件導入與導出功能

發布時間:2021-04-15 10:33:58 來源:億速云 閱讀:927 作者:小新 欄目:編程語言

小編給大家分享一下java如何實現CSV文件導入與導出功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

導入導出功能很多時候用到的都是Excel文件,但是現在越來越多的使用了CSV文件進行此操作,它是一個純文本文件,可以用記事本打開,也可以用Excel打開。CSV文件不像Excel那樣有很多條條框框,它使用硬回車分割每條記錄,用逗號分隔每條數據的字段。

CSV格式的文件就是用硬回車和文本都好實現的表格,用Excel一讀就成了表格。文件名后綴就是 .csv。

直接上代碼吧!

導入部分

導入的時候基于Ajax請求,js代碼如下:

function importIpMac(upload) {
 var importTextInfo = document.getElementById("importTextInfo");
 importTextInfo.value="";
 $.ajaxFileUpload({
  url: ctx + "/ipmac/importIpMac",
 type: 'post',
 secureuri: false, // 一般設置為false
 fileElementId: 'upload', // 上傳文件的id、name屬性名
 dataType: 'text', // 返回值類型,一般設置為json、application/json
  success: function(data, status){
  getIpMacBase();
  },
  error: function(data, status, e){
  alert('請求異常!');
  }
 });
}

Java代碼控制層:

 /**
 * 導入
 */
 @ResponseBody
 @RequestMapping(value = "/importIpMac", method = RequestMethod.POST, headers = { "content-type=multipart/form-data" })
 public int importIpMac(HttpServletRequest request,
 HttpServletResponse response,
 @RequestParam(value = "upload") MultipartFile[] buildInfo)
 throws ServletException, IOException {
 
 // 得到上傳文件的保存目錄,將上傳的文件存放于WEB-INF目錄下,不允許外界直接訪問,保證上傳文件的安全
 String savePath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload");
 savePath = savePath.replace("file:", ""); // 去掉file:
 File file1 = new File(savePath);
 // 判斷上傳文件的保存目錄是否存在
 if (!file1.exists() && !file1.isDirectory()) {
 log.info(savePath + "目錄不存在,需要創建");
 file1.mkdir();
 }
 // 刪除此路徑下的所有文件以及文件夾
 delAllFile(savePath);
 
 try {
 InputStream is = buildInfo[0].getInputStream();// 多文件也適用,我這里就一個文件
 byte[] b = new byte[(int) buildInfo[0].getSize()];
 int read = 0;
 int i = 0;
 while ((read = is.read()) != -1) {
 b[i] = (byte) read;
 i++;
 }
 is.close();
 String filePath = savePath + "/" + "temp" + "_" + buildInfo[0].getOriginalFilename();
 log.info("臨時文件保存路徑:" + savePath + "/" + "temp" + "_" + buildInfo[0].getOriginalFilename());
 OutputStream os = new FileOutputStream(new File(savePath + "/" + "temp" + "_" + buildInfo[0].getOriginalFilename()));// 文件原名,如a.txt
 os.write(b);
 os.flush();
 os.close();
 topologyIpMacPortRealService.importIpMac(filePath);
 } catch (Exception e) {
 if (log.isDebugEnabled())
 log.debug("系統異常", e);
 }
 
 return 1;
 }

Java代碼實現層:

 public int importIpMac(String filePath) throws Exception {
 // List<String> dataList=CSVUtils.importCsv(new File("/Users/wjm/Desktop/testexcel.csv"));
 List<String> dataList = CSVUtils.importCsv(new File(filePath));
 if (dataList != null && !dataList.isEmpty()) {
 for (int i = 1; i < dataList.size(); i++) {
 String data = dataList.get(i);
 SiTopologyIpMacPortBase base = new SiTopologyIpMacPortBase();
 String[] source = data.split(",");
 if (source[0] != "") {
  base.setId(source[0]);
  base.setMac(source[1]);
  base.setIp(source[2]);
  base.setUpIp(source[3]);
  base.setUpName(source[4]);
  base.setUpIndex(source[5]);
  base.setModifyTime(source[6]);
 
  siTopologyIpMacPortBaseDao.insert(base);
 }
 }
 }
 return 1;
 }

其中CSVUtils類:

package com.one.si.toimpl.common.utils;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
 
/** 
 * CSV操作(導出和導入)
 *
 * @author wjm
 * @version 1.0 Nov 24, 2015 4:30:58 PM 
 */
public class CSVUtils {
 
<span > </span>/**
  * 導出
  * 
  * @param file csv文件(路徑+文件名),csv文件不存在會自動創建
  * @param dataList 數據
  * @return
  */
 public static boolean exportCsv(File file, List<String> dataList){
  boolean isSucess=false;
  
  FileOutputStream out=null;
  OutputStreamWriter osw=null;
  BufferedWriter bw=null;
  try {
//   OutputStreamWriter in_=new OutputStreamWriter(new FileOutputStream("文件名"), "gbk");
   out = new FileOutputStream(file);
   osw = new OutputStreamWriter(out, "gbk");
   bw =new BufferedWriter(osw);
   if(dataList!=null && !dataList.isEmpty()){
    for(String data : dataList){
     bw.append(data).append("\r");
    }
   }
   isSucess=true;
  } catch (Exception e) {
   isSucess=false;
  }finally{
   if(bw!=null){
    try {
     bw.close();
     bw=null;
    } catch (IOException e) {
     e.printStackTrace();
    } 
   }
   if(osw!=null){
    try {
     osw.close();
     osw=null;
    } catch (IOException e) {
     e.printStackTrace();
    } 
   }
   if(out!=null){
    try {
     out.close();
     out=null;
    } catch (IOException e) {
     e.printStackTrace();
    } 
   }
  }
  
  return isSucess;
 }
 
 /**
  * 導入
  * 
  * @param file csv文件(路徑+文件)
  * @return
  */
 public static List<String> importCsv(File file){
  List<String> dataList=new ArrayList<String>();
  
  BufferedReader br=null;
  try { 
   br = new BufferedReader(new FileReader(file));
   String line = ""; 
   while ((line = br.readLine()) != null) { 
    dataList.add(line);
   }
  }catch (Exception e) {
  }finally{
   if(br!=null){
    try {
     br.close();
     br=null;
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 
  return dataList;
 }
}

導出部分

js部分:

/*
 * 導出基準表中的數據
 */
function exportIpMac() {
 window.open("exportIpMac.do");
}

Java代碼控制層:

 /**
 * 導出的基準表信息
 */
 @ResponseBody
 @RequestMapping("/exportIpMac")
 public String exportIpMac(HttpServletRequest request, HttpServletResponse response) throws Exception {
 List<String> dataList = topologyIpMacPortRealService.exportIpMac();
 response.setCharacterEncoding("GBK");
 SimpleDateFormat dfs = new SimpleDateFormat("yyyyMMddHHmmss");// 設置日期格式
 Date time = new Date();
 String tStamp = dfs.format(time);
 String filename = "IpMacPortExport"+tStamp + ".csv";
 response.setHeader("contentType", "text/html; charset=GBK");
 response.setContentType("application/octet-stream");
 response.addHeader("Content-Disposition", "attachment; filename="+filename);
 String cp=request.getSession().getServletContext().getRealPath("/");
 String path = cp+"download/"+filename;
 File file = new File(path);
 BufferedInputStream bis = null;
 BufferedOutputStream out = null;
 FileWriterWithEncoding fwwe =new FileWriterWithEncoding(file,"GBK");
 BufferedWriter bw = new BufferedWriter(fwwe);
 if(dataList!=null && !dataList.isEmpty()){
   for(String data : dataList){
    bw.write(data);
    bw.write("\n");
   }
  }
 bw.close();
 fwwe.close();
 try {
 bis = new BufferedInputStream(new FileInputStream(file));
 out = new BufferedOutputStream(response.getOutputStream());
 byte[] buff = new byte[2048];
 while (true) {
  int bytesRead;
  if (-1 == (bytesRead = bis.read(buff, 0, buff.length))){
  break;
  }
  out.write(buff, 0, bytesRead);
 }
 file.deleteOnExit();
 }
 catch (IOException e) {
 throw e;
 }
 finally{
 try {
 if(bis != null){
  bis.close();
 }
 if(out != null){
  out.flush();
  out.close();
 }
 }
 catch (IOException e) {
 throw e;
 }
 }
 delAllFile(cp+"download/");
 return null;
 
 }

Java代碼實現層:

public List<String> exportIpMac() throws Exception {
 List<String> dataList = new ArrayList<String>();
 try {
 List<SiTopologyIpMacPortReal> list = siTopologyIpMacPortRealdao.selectAllData();
 dataList.add("ID,地址,IP地址,設備,設備名稱,端口,更新時間");
 for (int i = 0; i < list.size(); i++) {
 dataList.add(list.get(i).getId() + "," + list.get(i).getMac()
  + "," + list.get(i).getIp() + ","
  + list.get(i).getUpIp() + ","
  + list.get(i).getUpName() + ","
  + list.get(i).getUpIfIndex() + ","
  + list.get(i).getModifyTime());
 }
 } catch (Exception e) {
 e.printStackTrace();
 }
 return dataList;
 }

使用的是Chrome瀏覽器,下載的時候會直接在瀏覽器下面進行顯示下載。

以上是“java如何實現CSV文件導入與導出功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新竹市| 仁布县| 安图县| 海原县| 福海县| 札达县| 宜川县| 荥阳市| 武义县| 如皋市| 佛坪县| 库尔勒市| 比如县| 吉木萨尔县| 宁安市| 应城市| 赞皇县| 汶川县| 改则县| 九江市| 阿拉善盟| 内江市| 天峨县| 柯坪县| 包头市| 丰镇市| 巴林右旗| 安徽省| 凤凰县| 吉木乃县| 长垣县| 潜山县| 南召县| 高雄市| 涞水县| 盐山县| 泾源县| 红原县| 青岛市| 皮山县| 山西省|