Извлечение значений из javascript вставленной html таблицы для вычисления чего-либо - PullRequest
0 голосов
/ 02 августа 2020

Итак, я пытаюсь создать веб-инструмент, который может рассчитывать комиссию для отдела продаж. У меня есть таблица Excel, которую я могу извлечь, чтобы увидеть все сделки, которые имеют право на комиссию. К этому моменту я могу поместить значения листа Excel в таблицу HTML, но я хочу производить вычисления с этими значениями.

Итак, мой вопрос: есть ли способ извлечь / использовать значения из таблица и произвести с ней расчеты?

Код:

<input type="file" id="fileUpload" />
    <input type="button" id="upload" value="Upload" onclick="Upload()" />
    <hr />
    <div id="dvExcel"></div>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.13.5/xlsx.full.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.13.5/jszip.js"></script>
    <script type="text/javascript">
        function Upload() {
            //Reference the FileUpload element.
            var fileUpload = document.getElementById("fileUpload");
    
            //Validate whether File is valid Excel file.
            var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.xls|.xlsx)$/;
            if (regex.test(fileUpload.value.toLowerCase())) {
                if (typeof (FileReader) != "undefined") {
                    var reader = new FileReader();
    
                    //For Browsers other than IE.
                    if (reader.readAsBinaryString) {
                        reader.onload = function (e) {
                            ProcessExcel(e.target.result);
                        };
                        reader.readAsBinaryString(fileUpload.files[0]);
                    } else {
                        //For IE Browser.
                        reader.onload = function (e) {
                            var data = "";
                            var bytes = new Uint8Array(e.target.result);
                            for (var i = 0; i < bytes.byteLength; i++) {
                                data += String.fromCharCode(bytes[i]);
                            }
                            ProcessExcel(data);
                        };
                        reader.readAsArrayBuffer(fileUpload.files[0]);
                    }
                } else {
                    alert("This browser does not support HTML5.");
                }
            } else {
                alert("Please upload a valid Excel file.");
            }
        };
        function ProcessExcel(data) {
            //Read the Excel File data.
            var workbook = XLSX.read(data, {
                type: 'binary'
            });
    
            //Fetch the name of First Sheet.
            var firstSheet = workbook.SheetNames[0];
    
            //Read all rows from First Sheet into an JSON array.
            var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
    
            //Create a HTML Table element.
            var table = document.createElement("table");
            table.border = "4";
    
            //Add the header row.
            var row = table.insertRow(-1);
    
            //Add the header cells.
            var headerCell = document.createElement("TH");
            headerCell.innerHTML = "Rep";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Type";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Number";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Client";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Revenue";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Equipment";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Share";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Other";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Date";
            row.appendChild(headerCell);
    
            headerCell = document.createElement("TH");
            headerCell.innerHTML = "Paidinfulldate";
            row.appendChild(headerCell);
    
    
            //Add the data rows from Excel file.
            for (var i = 0; i < excelRows.length; i++) {
                //Add the data row.
                var row = table.insertRow(-1);
                var client = "Client/Vendor"
    
                //Add the data cells.
                var cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Rep;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Type;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Number;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Client;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Revenue;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Equipment;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Share;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Other;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Date;
    
                cell = row.insertCell(-1);
                cell.innerHTML = excelRows[i].Paidinfulldate;
    
            }
    
            var dvExcel = document.getElementById("dvExcel");
            dvExcel.innerHTML = "";
            dvExcel.appendChild(table);
        };
    </script>
...