전단 에 대해 json 데 이 터 를 Excel 형식 으로 내 보 내 고 다운로드 합 니 다.

3343 단어
전체적인 사고방식 은 json 데이터 의 key, value 와 Excel 의 행렬 전환, 그리고 데이터 가 Excel 표 에 저 장 된 위치, 지역 문 제 를 해결 하 는 것 이다.
여기에 사용 할 두 개의 작은 플러그 인 중 하 나 는 xslx. js 이 고 하 나 는 FileSaver. js 입 니 다. 전 자 는 엑셀 생 성 을 처리 하고 후 자 는 파일 을 다운로드 하여 로 컬 에 저장 합 니 다.
다운로드 주소:
https://github.com/eligrey/FileSaver.js
https://github.com/SheetJS/js-xlsx/tree/028d7010a516383cb9a2fdd0f0a919392e77600a/demos/angular




    
        excel
    
    



    
    
        var students = [{
            "name": "  1",
            "age": "6",
            "sex": " ",
            "height": "60"
        }, {
            "name": "  2",
            "age": "7",
            "sex": " ",
            "height": "70"
        }, {
            "name": "  3",
            "age": "8",
            "sex": " ",
            "height": "80"
        }];
        function downloadExl(data, type) {

            var keys = Object.keys(data[0]);
            var firstRow = {};
            keys.forEach(function (item) {
                firstRow[item] = item;
            });
            data.unshift(firstRow);

            var content = {};

            //  json       excel     
            var sheetsData = data.map(function (item, rowIndex) {
                return keys.map(function (key, columnIndex) {
                    return Object.assign({}, {
                        value: item[key],
                        position: (columnIndex > 25 ? getCharCol(columnIndex) : String.fromCharCode(65 + columnIndex)) + (rowIndex + 1),
                    });
                });
            }).reduce(function (prev, next) {
                return prev.concat(next);
            });

            sheetsData.forEach(function (item, index) {
                content[item.position] = { v: item.value };
            });

            //    ,     A1 D10,SheetNames:  ,
            var coordinate = Object.keys(content);
            var workBook = {
                SheetNames: ["helloSheet"],
                Sheets: {
                    "helloSheet": Object.assign({}, content, { "!ref": coordinate[0] + ":" + coordinate[coordinate.length - 1] }),
                }
            };
            //                 
            var excelData = XLSX.write(workBook, { bookType: "xlsx", bookSST: false, type: "binary" });
            var blob = new Blob([string2ArrayBuffer(excelData)], { type: "" });
            saveAs(blob, "hello.xlsx");
        }
        //       
        function string2ArrayBuffer(s) {
            var buf = new ArrayBuffer(s.length);
            var view = new Uint8Array(buf);
            for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
            return buf;
        }
        //           26    。    :[0-25] -> [A-Z]。
        function getCharCol(n) {
            let temCol = "",
                s = "",
                m = 0
            while (n > 0) {
                m = n % 26 + 1
                s = String.fromCharCode(m + 64) + s
                n = (n - m) / 26
            }
            return s
        }
    




순 전 히 출처 를 참고 하 는 것 이다.https://www.cnblogs.com/absolute-child/p/8083129.html

좋은 웹페이지 즐겨찾기