自己臨時修改別人的SheetJS調用方法

自己在別人基礎上,臨時修改的代碼,

<html>
<head>

    <title>JS-XLSX Live Demo</title>

    <style>
        #drop {
            border: 2px dashed #bbb;
            -moz-border-radius: 5px;
            -webkit-border-radius: 5px;
            border-radius: 5px;
            padding: 25px;
            text-align: center;
            font: 20pt bold,"Vollkorn";
            color: #bbb
        }

        #b64data {
            width: 100%;
        }

        a {
            text-decoration: none
        }

        button {
        }
    </style>

    <script type="text/javascript" src="dist/xlsx.full.min.js"></script>
    <script type="text/javascript" src="dist/xlsx.core.min.js"></script>

    <script type="text/javascript" src="dist/jquery.min.js"></script>

</head>

    <body>
<pre>
<input type="file" name="xlfile" id="xlf" onchange="importf(this)">
</pre>
<pre id="out"></pre>
        <br>
        <div id="demo"></div>

        <script>
            /*
                  FileReader共有4種讀取方法:
                  1.readAsArrayBuffer(file):將文件讀取爲ArrayBuffer。
                  2.readAsBinaryString(file):將文件讀取爲二進制字符串
                  3.readAsDataURL(file):將文件讀取爲Data URL
                  4.readAsText(file, [encoding]):將文件讀取爲文本,encoding缺省值爲'UTF-8'
                               */
            var workbook;//讀取完成的數據
            var rABS = false; //是否將文件讀取爲二進制字符串

            function importf(obj) {//導入
                debugger;
                if (!obj.files) {
                    return;
                }
                var f = obj.files[0];
                var reader = new FileReader();
                reader.onload = function (e) {
                    var data = e.target.result;
                    if (rABS) {
                        workbook = XLSX.read(btoa(fixdata(data)), {//手動轉化
                            type: 'base64'
                        });
                    } else {
                        workbook = XLSX.read(data, {
                            type: 'binary'
                        });
                    }
                    // 循環頁籤取數
                    console.log("頁籤數量:" + workbook.SheetNames.length);
                    var showHtml = "";
                    for (var sheetNum = 0; sheetNum < Number(workbook.SheetNames.length); sheetNum++) {
                        var first_sheet_name = workbook.SheetNames[sheetNum]; // 獲取工作簿中的工作表名字
                        console.log("workbook.SheetNames[0]" + first_sheet_name)
                        var address_of_cell = 'B1'; // 提供一個引用樣式(單元格下標)
                        var address_of_cell2 = 'B2'; // 提供一個引用樣式(單元格下標)

                        var worksheet = workbook.Sheets[first_sheet_name]; // 獲取對應的工作表對象
                        //				console.log(worksheet['!ref']) // 獲得該excel的內容範圍 例如: A1:F30
                        var scope = worksheet['!ref'];
                        if (scope == undefined) {
                            console.log("文件格式有誤!")
                            showHtml = showHtml + first_sheet_name + "頁籤解析有誤,請檢查格式是否正確! <br />"
                            break;
                        } else {
                            showHtml = showHtml + first_sheet_name + "頁籤已解析完成 <br />"
                        }
                        // js截取某個字符串後面的內容:
                        scope = scope.match(/:(\S*)/)[1]; // 獲取表格邊界 例如:F30
                        console.log(scope);
                        var reg = /[A-Z]/g;
                        char_scope = scope.match(reg); //
                        console.log("===========" + char_scope);

                        // 用正則去除字符串種的數字,獲取表格邊界字母值  例如:F
                        var scopeLetter = scope.replace(/\d+/g, '');
                        console.log("=====ssss======" +scopeLetter);
                        // 用正則將非數字的去除,獲取表格邊界行值  例如:30
                        var scopeNum = scope.replace(/[^0-9]/ig, "");
                        //			console.log(Number(scopeNum)+1);
                        // 表名稱
                        var tableName = "";
                        // 表註釋
                        var tableNameNote = "";
                        // 創建表結構的字符串
                        var tableSql = "create table ";
                        // 創建表字段註釋字符串
                        var tableNote = "";
                        // 創建表的主鍵字符串
                        var tablePk = "";
                        //				// 循環獲取數據
                        for (var num = 1; num < Number(scopeNum) + 1; num++) { //  循環邊界行值
                            var isNull = "";// 是否爲空
                            var def = ""; // 默認值
                            for (var i = 0; i < 26; i++) {// 循環邊界字母值
                                var letters = String.fromCharCode(65 + i); // 字母
                                console.log(String.fromCharCode(65+i)+num);//輸出A-Z  26個大寫字母
                                var address_cell = String.fromCharCode(65 + i) + num; // 提供一個引用樣式(單元格下標)
                                var desired_cell = worksheet[address_cell];// 獲取對應的單元格對象
                                var desired_value = (desired_cell ? desired_cell.v : undefined);// 獲取對應的單元格對象的值
                                console.log(desired_value)
                                // 表結構字符串
                               
                            }
                        }
                        console.log(tableSql);
                        console.log(tableNote);
                        console.log(tablePk);
                        //function download(filename, text) {
                        //    var element = document.createElement('a');
                        //    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
                        //    element.setAttribute('download', filename);

                        //    element.style.display = 'none';
                        //    document.body.appendChild(element);

                        //    element.click();

                        //    document.body.removeChild(element);
                        //}
                        //download(first_sheet_name + ".sql", tableSql + "\n" + tableNote + "\n" + tablePk);

                    }

                    document.getElementById("demo").innerHTML = showHtml;
                };
                if (rABS) {
                    reader.readAsArrayBuffer(f);
                } else {
                    reader.readAsBinaryString(f);
                }
            }

            function fixdata(data) { //文件流轉BinaryString
                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(l * w)));
                return o;
            }
        </script>


    </body>
</html>

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章