如何使用javascript选择或检索excelsheet的单元格数据?

用户12442996

我有 excel 表,我想使用 javascript 选择特定的单元格。

在此处输入图片说明

我有总计、年龄、位置、教育等过滤器,并希望过滤其数据,如 01##、02##、03## 等

所以我想选择这个工作表数据。

谢谢!

悉达多

首先laod excel表数据

var csvdata = "-1";

if (window.XMLHttpRequest)
    oReq = new XMLHttpRequest();
else if (window.ActiveXObject)
    oReq = new ActiveXObject('MSXML2.XMLHTTP.3.0');
else
    throw "XHR unavailable for your browser";
var __excelurl = "filename.xlsx";
if (__excelurl.toUpperCase().indexOf(".XLS") > -1 || __excelurl.toUpperCase().indexOf(".XLSX") > -1)
{
    oReq.open("GET", __excelurl, true);
}
xlsfile = false;

function getdata()
{
    if (__excelurl.toUpperCase().indexOf(".XLS") > -1 || __excelurl.toUpperCase().indexOf(".XLSX") > -1)
    {
        if (__excelurl.toUpperCase().indexOf(".XLSX") < 0)
        {
            xlsfile = true;
        }
        if (typeof Uint8Array !== 'undefined')
        {
            oReq.responseType = "arraybuffer";
            oReq.onload = function (e)
            {
                if (typeof console !== 'undefined')
                    console.log("onload", new Date());
                var arraybuffer = oReq.response;
                var data = new Uint8Array(arraybuffer);
                var arr = new Array();
                for (var i = 0; i != data.length; ++i)
                    arr[i] = String.fromCharCode(data[i]);
                var wb = XLSX.read(arr.join(""), {type: "binary"});
                ;
                process_wb(wb);
            };
        } else
        {
            oReq.setRequestHeader("Accept-Charset", "x-user-defined");
            oReq.onreadystatechange = function ()
            {
                if (oReq.readyState == 4 && oReq.status == 200)
                {
                    var ff = convertResponseBodyToText(oReq.responseBody);
                    if (typeof console !== 'undefined')
                        console.log("onload", new Date());
                    var wb = XLSX.read(ff, {type: "binary"});
                    ;
                    process_wb(wb);
                }
            };
        }
        oReq.send();
    } else
    {
        $.ajax({url: __excelurl, aync: false, success: function (csvd) {
                csvdata = csvd;
                to_csv()
            },
            dataType: "text",
            complete: function () {}
        });
    }
}
getdata();

现在将excel数据转换为csv

var finaldata = [];
function process_wb(wb)
{
    icount = 0;
    inprocess = false;
    pcount = 0;
    output = to_csv(wb);
}

function to_csv(workbook)
{
    csvcount = 0;
    if (csvdata == "-1")
    {
        csvdata = [];
        try
        {
            workbook.SheetNames.forEach(function (sheetName) {
                if (xlsfile)
                {
                    var csv = XLS.utils.sheet_to_csv(workbook.Sheets[sheetName]);
                } else
                {
                    var csv = XLSX.utils.sheet_to_csv(workbook.Sheets[sheetName]);
                }
                if (csv.length > 0)
                {
                    csvtemp = csv.split("\n");
                    for (icsv = 0; icsv < csvtemp.length; icsv++)
                    {
                        if (!csvtemp[icsv])
                        {
                            continue;
                        }
                        csvcount++;
                        var xdata = csvtemp[icsv];
                        csvdata.push(xdata);
                    }
                }
            });
        } catch (e)
        {
            console.log('Format not compatible. Convert the data to Excel or CSV or Paste to see the details in the map.', 1, "Error !!!", "");
            return;
        }
    } else
    {
        if (csvdata.length > 0)
        {
            csvtemp = csvdata.split("\n");
            csvdata = [];
            for (icsv = 0; icsv < csvtemp.length; icsv++)
            {
                if (!csvtemp[icsv])
                {
                    continue;
                }
                var xdata = csvtemp[icsv];
                csvdata.push(xdata);
            }
        }
    }
    if (csvdata.length == 0)
    {
        console.log("No data to generate chart");
        return;
    }
    header = csvdata[0];
    header = header.split('"');
    header = header.join("")
    header.replace(/'"'/g, '');
    header = header.split(",");
    finaldata = [];
    for (idata = 1; idata < csvdata.length; idata++)
    {
        fdata = {};
        ftdata = csvdata[idata]
        ftx = ftdata.split('"');
        ftdata = ftx.join("")
        ftdata.replace(/'"'/g, '');
        ftdata = ftdata.split(',');
        for (ihead = 0; ihead < header.length; ihead++)
        {
            if (!header[ihead])
            {
                continue;
            }
            ftx = ftdata[ihead];
            ftx = ftx.replace(/'"'/g, "")
            fdata[header[ihead]] = ftx;
        }
        finaldata.push(fdata);
    }    
}
console.log(finaldata);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用nodejs代码删除excelsheet单元格中的所有空格

如何使用JavaScript从表中获取单元格的数据

如何使用 IF 选择单元格?

如何选择数据框中的特定单元格?

选择datagridview单元格或列时如何获取数据

如何使用行中单元格的值选择在pandas数据框中查找列名?

如何使用单元格值选择数据表行?

如何在Jupyter中使用JavaScript选择当前单元格?

如何使用QCombobox选择来更新QTableView单元格?

如何使用jQuery选择相邻的表格单元格

如何跟踪使用NSIndexPath选择的单元格?

如何使用选择单元格范围变量

根据单元格选择查询数据

如何在Google表格的单元格中显示默认的当前日期,在该单元格中使用数据验证来选择日期?

如何使用JavaScript检查空的TD单元格(数据输入是字符串)

如何使用UILongPressGestureRecognizer从tableview单元格按钮传递数据?

如何使用pyside在QtableView单元格中设置数据

如何使用Xamarin在单元格视图中显示数据

如何使用swift重新加载tableview单元格数据

如何使用 VBA 获取单元格内的数据长度?

如何按功能选择单元格

如何选择QTableWidget的多个单元格?

如何使用Javascript获取asp:Table单元格值?

如何使用 JavaScript 在 HTML 表格中搜索单元格?

如何从Android sqlite中的特定单元格检索实型数据?

使用JavaScript / jQuery选择合并的单元格之后每行的第一个单元格

通过使用单元格值中的文件路径从多个Excel文件中检索数据

在行单元格和多个列单元格匹配的地方检索数据

使用 JavaScript 从 Excel 电子表格中检索单元格值