中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

js讀取csv內容拼接成json的方法是什么

發布時間:2022-10-22 14:43:38 來源:億速云 閱讀:138 作者:iii 欄目:開發技術

這篇文章主要介紹了js讀取csv內容拼接成json的方法是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇js讀取csv內容拼接成json的方法是什么文章都會有所收獲,下面我們一起來看看吧。

js 讀取csv內容拼接成json

formdata對象上傳了csv文件,讀取文件內容拼接成json對象

js讀取csv內容拼接成json的方法是什么

var form = new FormData();
var files = $("#getfile")[0].files;
var reader = new FileReader();
    reader.readAsText( files[0],"gbk" );            //以文本格式讀取
    reader.onload = function(evt){
        var data = evt.target.result;        //讀到的數據
        console.log(data);
        splitdate = data.split(/\s+/) ;
        console.log(splitdate.length)
        var arr1=new Array();
        var arr2=new Array();
        var phone=new Array();
        var name=new Array();
        for(var i=0;i<splitdate.length;i++){
            var data =splitdate[i].split(",");
            arr1.push(data[0])
            arr2.push(data[2])
        }
        for(var i=1;i<arr1.length-1;i++){
            name.push(arr1[i])
        }
        for(var i=1;i<arr2.length-1;i++){
                        phone.push(arr2[i])
                    }
                    var userList = [];
                    for(var i=0;i<name.length;i++){
                        var json = {};
                        json.value = name[i];  
                        json.name = phone[i]; 
                        console.log(json);
                        userList.push(json);
                    }
                    console.log(userList)
                }

最終拼接成為key value格式的json對象

純js讀取txt,xlsx,csv,xls文件

為了減少服務器的壓力,需要前端讀取文件數據,然后自己拼接分批提交給后臺,這里將讀文件記錄下來

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>讀取文件</title>
	<script src="js/shim.js"></script>
	<script src="js/xlsx.full.min.js"></script>
	<script src="js/jschardet.min.js"></script>
</head>
<body>
	<input type='file' value="" id="read" >
</body>
<script>
	String.prototype.trim=function(){ //給字符串添加一個去前后空格的方法
		return this.replace(/s|xA0/g,"");
	}
	window.οnlοad=function(){
		var file=document.getElementById("read");
		file.addEventListener("change",read,false);		
		/*function resetInpuFile() {      //定義一個重置input file控件的方法,否則如果文件不變,不能再次觸發input控件的onchange事件
                    var control = event.target;
                    //control.replaceWith(control = control.clone(true));       //這個重置方法對vue沒用,vue的事件不是直接綁定的,所以復制不了
                    control.wrap('<form>').closest('form').get(0).reset();      //用一個form包裹input,調用form的reset方法,然后解除包裹
                    control.unwrap();
        }*/
		function read(e){
			//獲取文件類型
			var filename=e.target.files[0].name;
			var phoneStr = '';
            var messageContent='';
			console.log(filename);
			var fileType=filename.substr(filename.lastIndexOf('.')+1,filename.length);
			console.log(fileType);
			//檢測是瀏覽器是否支持readAsBinaryString函數
			var rABS = typeof FileReader !== 'undefined' && typeof FileReader.prototype !== 'undefined' && typeof FileReader.prototype.readAsBinaryString !== 'undefined';  
			var reader=new FileReader();
			if(rABS){
				reader.readAsBinaryString(e.target.files[0]);//發起異步請求
			}else{
				reader.readAsArrayBuffer(e.target.files[0]);//發起異步請求
			}
			//reader.readAsDataURL(e.target.files[0]);//發起異步請求
			//reader.readAsArrayBuffer(e.target.files[0]);//發起異步請求
			reader.οnlοad=function(e){
				var data = e.target.result;
                    if (fileType == 'txt' || fileType == 'csv') {       //txt或csv文件直接讀取
                        //console.log(data);
                        var str = null;
                        var viewBuf = null;
                        if (rABS) {
                            str = data;   //此時data為binarystring,需要把binarystring轉換為Uint8Array
                            var newArray = [];
                            for (var index = 0; index < data.length; index++) {
                                newArray.push(data.charCodeAt(index));
                            }
                            viewBuf = new Uint8Array(newArray);
                        } else {
                            viewBuf = new Uint8Array(data);   //此時data為ArrayBuffer
                            for (var index in viewBuf) {
                                str += String.fromCharCode(viewBuf[index]);
                                if (index >= 100) {     //考慮到效率,只取前1000個用于判斷字符集
                                    break;
                                }
                            }
                        }
 
                        //console.log(str);
                        var codepage = jschardet.detect(str.substring(0, 1000)).encoding;
                        //console.log(codepage);
 
                        if (codepage == 'GB2312' || codepage == 'GB18030') {
                            codepage = 'GB18030';
                        } else if (codepage == 'ascii' || codepage == 'UTF-8' || codepage == 'UTF-16BE' || codepage == 'UTF-16LE') {
 
                        } else {
                            alert('不支持的編碼格式:' + codepage + ';你只能使用UTF-8或GB18030(GB2320,GBK)編碼格式文件');
                           // resetInpuFile();
                            return;
                        }
                        phoneStr = new TextDecoder(codepage).decode(viewBuf);
                        console.log(phoneStr);
                    } else if (fileType == 'xls' || fileType == 'xlsx') {       //excle文件用js-xlsx解析
 
                        function fixdata(data) {    //arrayBuffer轉base64字符串
                            var o = "", l = 0, w = 10240;
                            for (; l < data.byteLength / w; ++l)
                                o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
                            o += String.fromCharCode.apply(null, new Uint8Array(data.slice(o.length)));
                            return o;
                        }
 
                        function get_columns(sheet, type) {   //獲取head頭(excel文件第一行)
                            var val, rowObject, range, columnHeaders, emptyRow, C;
                            if (!sheet['!ref']) return [];
                            range = XLS.utils.decode_range(sheet["!ref"]);
                            columnHeaders = [];
                            for (C = range.s.c; C <= range.e.c; ++C) {
                                val = sheet[XLS.utils.encode_cell({ c: C, r: range.s.r })];
                                if (!val) continue;
                                columnHeaders[C] = type.toLowerCase() == 'xls' ? XLS.utils.format_cell(val) : val.v;
                                //console.log(val, columnHeaders[C]);
                            }
                            return columnHeaders;
                        }
 
                        var readtype = { type: rABS ? 'binary' : 'base64' };
                        if (!rABS) {
                            arr = fixdata(data);
                            data = btoa(arr);
                        }
                        //console.log('data:' + data);
                        try {
                            var workbook = XLSX.read(data, readtype);   //workbook.SheetNames[0]是獲取Sheets中第一個Sheet的名字,workbook.Sheets[Sheet名]獲取第一個Sheet的數據
                        } catch (e) {
                            alert('無法讀取的excel文件,格式錯誤');
                            resetInpuFile();
                            return;
                        }
                        //console.log(wb); 
                        var XL = fileType.toUpperCase() === 'XLS' ? XLS : XLSX;   //選擇是XLS對象還是XLSX對象
 
                        workbook.SheetNames.forEach(function (sheetName) {
                            var roa = XL.utils.sheet_to_json(workbook.Sheets[sheetName], { raw: true });
                           // console.log(roa);
                            if (roa.length <= 0) {
                                return;
                            }
                            var columns = get_columns(workbook.Sheets[sheetName], fileType);    //獲取本sheet的第一行
                            var keyName = '';
                            var keyName1='';
                            for (var index in columns) {    //查看第一行的列里是否有諸如手機號碼這樣列名
                                //if ($.trim(columns[index]) === '手機號碼') {
                                if (columns[index].trim() === '手機號碼') {
                                    keyName = columns[index];
                                    continue;
                                }
                                 //if($.trim(columns[index]) === '短信內容'){
                                 if(columns[index].trim() === '短信內容'){
                                    keyName1 = columns[index];
                                    continue;
                                }
                            }
                            if (keyName === '') {   //沒找到,返回
                            //    console.log('沒找到key');
                                return;
                            }
                            if (keyName1 === '') {   //沒找到,返回
                             //   console.log('沒找到key');
                                return;
                            }
                            for (var index=0;index<roa.length;index++) {//這里吧讀出來的數據存成字符串
                                if(roa[index][keyName]!='' && roa[index][keyName1]!=''){
                                    phoneStr += roa[index][keyName] + ',';
                                    messageContent +=(roa[index][keyName1]).replace(/,/g,',')+',';
                                }
                            }
 
                            //
                        });
                        //console.log(phoneStr);
                        if (phoneStr === '' || messageContent==='') {
                            alert('沒有在excle文件中找到"手機號碼或者短信內容"列');
                           // resetInpuFile();
                            return;
                        }
                    }
					console.log(phoneStr)
					console.log(messageContent)
                   // resetInpuFile();
				
			}
		}
	}
</script>
</html>

這里主要用到h6的fileReader API以及xlsx.js, jschardet.js插件讀取四種類型的文件

關于“js讀取csv內容拼接成json的方法是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“js讀取csv內容拼接成json的方法是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

嘉禾县| 江源县| 邵东县| 太仆寺旗| 全椒县| 固镇县| 柘荣县| 肥西县| 屯留县| 博白县| 横峰县| 石河子市| 昌吉市| 茶陵县| 扬中市| 琼中| 武义县| 和平县| 安泽县| 辉县市| 台中市| 穆棱市| 来宾市| 罗平县| 波密县| 灵丘县| 黑山县| 隆化县| 阜平县| 安塞县| 刚察县| 曲靖市| 邻水| 崇仁县| 志丹县| 桑植县| 海城市| 太白县| 南雄市| 南陵县| 南充市|