테스트 사이트 - 개발 중인 베타 버전입니다

javascript로 excel 다운할 때 input요소 안나타나도록 할 수 없나요? 채택완료

지음ad 7년 전 조회 2,903

 

javascript로 엑셀을 다운받고 있는데 위에처럼 input 체크박스와 텍스트 요소가 나타납니다.

그냥 일반 숫자나 글처럼 나타나도록 할 수 없을까요?

코드는 아래와 같이 사용하고 있습니다..

도움부탁드려요. ㅠ

css적용 방법도 같이부탁드립니다....

</p>

<p>        $(document).ready(function(){

            function itoStr($num){

                $num < 10 ? $num = '0'+$num : $num;

                return $num.toString();

            }

            var btn = $('#btntest');

            var tbl = 'test';

            btn.click(function(e){

                var dt = new Date();

                var year = itoStr( dt.getFullYear() );

                var month = itoStr( dt.getMonth() + 1 );

                var day = itoStr( dt.getDate() );

                var postfix = year + month + day;

                var fileName = "test"+ postfix + ".xls";

                var a = document.createElement('a');

                var data_type = 'data:application/vnd.ms-excel';

                var table_div = document.getElementById( tbl );

                var table_html = table_div.outerHTML.replace(/ /g, '%20');

                a.href = data_type + ', ' + table_html;

                a.download = fileName;

                a.click();

                e.preventDefault();

            });

        });</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
7년 전

상세한 코드에 대해서는 잘 알지 못합니다만, 로직을 대략 다음과 같이 하면 되지 않을까 합니다.

 

* 로직 : 엑셀 처리 직전에, 제외하고자 하는 셀 하이드 (또는 삭제)

 

$('input[type=text]').closest('td').hide(); // or $('input[type=text]').closest('td').remove();
$(':checkbox').closest('td').hide(); 
var table_div = document.getElementById( tbl );
var table_html = table_div.outerHTML.replace(/ /g, '%20');

 

이러한 방법이 기대한 것처럼 동작이 잘 될지는 모르겠습니다. 

(혹시나 참고가 될까 싶어 말씀드린 성격입니다.)

 

다른 방법은, jquery 를 사용하지 않고, php 로 excel library 를 이용하여 엑셀 다운로드를 구현하는 방법입니다.

/adm/sms_admin/num_book_file_download.php 파일의 소스를 응용하면,

DB 의 내용을 원하는 형태로 엑셀저장하는 것이 가능합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인