-
스크립트를 이용한 CSV 양식 다운로드개발 2020. 2. 25. 13:35
웹에서 csv 양식 다운로드 를 스크립트만 으로 만들경우
(여러 소스 가져다 만듬..... jquery / javascript 확인)
// CSV 파일 양식 다운로드
$(document).ready(function() {
$('#csvDownload').click( function(event){
var header = [];
header.push('회사명(한글/영문)');
header.push('주소(도로명주소)');
header.push('상세주소(쉼표제외)');
header.push('담당자명(한글/영문)');
header.push('담당자이메일');
header.push('담당자전화번호');//숫자 0으로 시작할 경우 인식을 못할수 있기때문에 body 에 '=\"숫자"' 와 같이 입력을 하여야 0이 제외되지 않는다.
var body = [];
body.push({
'key1':'test'
,'key2':'서울시 영등포구'
,'key3':'영등포로 1길 11'
,'key4':'홍길동'
,'key5':'test01@test.com'
,'key6':'=\"012342526"'
})
var keys = [];
keys.push('key1');
keys.push('key2');
keys.push('key3');
keys.push('key4');
keys.push('key5');
keys.push('key6');
exportDataToCSVFile.apply(this, [ header, keys, body ])
})
});//end function
function exportDataToCSVFile(header, keys, body) {
var csv;
csv="주의 !!!!다른이름으로 저장 > 파일형식: CSV(쉼표로 분리)(*.csv) 파일로 저장 > 이 형식을 계속 사용하시겠습니까? 예(Y) 를 선택해 주세요 ";
csv+='\n';
csv+=header.join(',');
csv+='\n';
$.each(body, function(index, rows){
if(rows){
var tmp = [];
$.each(keys, function(index, key){
key && tmp.push(rows[key])
})
csv+=tmp.join(',');
csv+='\n';
}
})
var filename = "csvFileUpload.csv";
var BOM = '%EF%BB%BF';// excel 에서 한글이 안깨지도록 해준다.
var csvString = csv;
// IE 10, 11, Edge Run
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
var csvIEstring=BOM+'' +csvString;
var blob = new Blob([decodeURIComponent(csvIEstring)], {
type: 'text/csv;charset=utf8'
});
console.log("IE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
window.navigator.msSaveOrOpenBlob(blob, filename);
} else {
console.log("Chrom !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
var csvData = 'data:application/csv;charset=utf-8,'+BOM+'' + encodeURIComponent(csv);
$(this)
.attr({
'download': filename,
'href': csvData,
'target': '_blank'
});
}
}// end exportDataToCSVFile
참고
업로드 받은 파일을 form 으로 자바로 넘겨서 파일을 읽어서 처리할 경우(파일 저장없이 처리)
JAVA 에서 처리 할때 line 으로 읽을때 아래와 같이 처리
일반 사용자들은 csv 파일을 다운받고 수정후 바로 저장하는 경우가 발생
# 이때 해결책
1. csv 저장방법 권고
다른이름으로 csv 저장 으로 권고 또는
저장하기전 데이터 > 텍스트 나누기 > 구분기호로 분리됨 > 다음 > 쉼표(C) 선택 > 다음 > 마침 을 선택 하고 저장
2. 일반사용자들은 그냥 저장(Ctrl+s) 하고 업로드
자바에서 아래와 같이 처리
// 열이 쉼표로 구분된 경우
if(line.contains(",")) {
getValues = line.split(",", -1); // -1 옵션은 마지막 "," 이후 빈 공백도 읽기 위한 옵션
}
// 열이 탭으로 구분된 경우
else if(line.contains("\t")) {
getValues = line.split("\t", -1); // -1 옵션은 마지막 "," 이후 빈 공백도 읽기 위한 옵션
}
'개발' 카테고리의 다른 글
리눅스 grep 명령어 옵션 간단정리 (0) 2021.06.03 ssh 접속 작업시 유용한 명령어(접속시 1회성 적용) (0) 2021.06.03 os 별 프로세서명령어 (0) 2019.11.11 curl 명령어 (0) 2019.11.11 세션 스토리지 - sessionStorage (0) 2019.11.11