如何:在HTML / ASP页中显示来自AlaSQL Excel文件导入的数据

时间:2019-06-17 18:18:44

标签: html asp.net json excel alasql

我正在内部网站上工作,该网站需要专门从静态XLSX电子表格中提取数据(每天通过自动化更新)。在此站点上,我需要将数据发布到表中并进行排序/搜索。在内容正确显示后,我可以自行处理特殊功能(搜索/排序选项)。

我的问题:我不知道如何在通过AlaSQL成功查询后如何显示内容。我可以在控制台中看到JSON格式的内容,但是我不是JS程序员,并且几乎不知道如何传递信息以使其正确显示。

我正在使用IIS 8的服务器上工作,使用HTML / C#来获取基本的网站代码,但是还集成了jQuery,W3.CSS框架,JS库AlaSQL和依赖项(用于Excel文件读取)。

如上所述,我已经做好了基础工作-Alasql正在运行,并且可以从Excel文件中获取结果,但仅限于控制台。我从下面的基本代码中知道它是设计使它发布到控制台的,但是我在JS工作中非常环保,我不知道如何存储数据,以便可以将其提取并显示在HTML表格中

如果我能做到这一点,[jquery-3.4.1和jquery.tablesorter(https://mottie.github.io/tablesorter/docs/)]。]我也确实有jQuery,希望可以帮助格式化文件表。

 <div class="w3-panel" id="OhYeah">
 </div>
 <script>
      var ImportData = (alasql.promise('select * from xlsx("File.xlsx",{sheetid:"Sheet1"})')
           .then(function(data){
            console.log(data);
       }).catch(function(err){
        console.log('There was an error reading the source file.:', err);
      }));
      document.getElementById("OhYeah").innerHTML = ImportData
 </script>

因此,仅通过摸索,我发现了一个资源,上面的“ document.getElementByID”行应以原始字符串显示数据(因此,我知道我至少取得了进展)-相反,我得到了输出“ [object Promise]”。

我查看了该站点上其他有类似请求的资源,但没有一个完全有用-这是我找到的最接近的问题,但是尝试使用其代码无效。 (Excel Table to Html table

最终目标是使内容循环遍历并创建具有所需内容的表。我找不到任何专门处理AlaSQL输出的资源,即使部分解释了这一点。与大多数事情一样,我可以弄清楚是否至少有一些代码可以“反向工程”到我要执行的工作中。

有什么想法吗?

---编辑6/18 ---

因此,只要尝试从逻辑上解决问题,我的工作就会更进一步,但仍然需要指导。我将代码修改为以下代码,现在得到了不同的输出。

 <div class="w3-panel" id="OhYeah">
 </div>
 <script>
      alasql.promise('select * from xlsx("File.xlsx",{sheetid:"Sheet1"})')
           .then(function(data){
            document.getElementById("OhYeah").innerHTML = (data)
            //console.log(data);
       }).catch(function(err){
        console.log('There was an error reading the source file.:', err);
      });
 </script>

我现在在显示页面上收到755(电子表格中的行数)“ [object Object]”打印输出。

[object Object],[object Object],[object Object],[object Object],
[object Object],[object Object],[object Object],[object Object],
[object Object],[object Object],[object Object],[object Object],
[object Object],[object Object],[object Object],[object Object], [...]

1 个答案:

答案 0 :(得分:0)

因此,在经过大量的等待和网络(和灵魂)搜索之后,我找到了自己的答案。我想把它发布在这里,以免其他人正在寻找相同的东西。

我最终获得了以下JS(和CSS)文件,以实现这一目标:

<script type="text/javascript" src="\js\jquery-3.4.1.slim.min.js"></script>
<script type="text/javascript" src="\js\xlsx.full.min.js"></script>
<script type="text/javascript" src="\js\jquery.miranda.min.js"></script>    
<script type="text/javascript" src="\js\alasql.min.js"></script>
<link href="\css\w3.css" rel="stylesheet" type="text/css">

jQuery Miranda来源:https://github.com/fabianomiranda/miranda-js

SheetJS(XLSX)来源:https://github.com/SheetJS/js-xlsx

AlaSQL来源:https://github.com/agershun/alasql

W3 CSS来源:https://www.w3schools.com/w3css/w3css_downloads.asp

最终脚本代码:

    function getData(){
        let query = alasql.promise('select * from xlsx("File.xlsx")')
            .then(function(data){
            $("#tbodyid").mirandajs(data)
        }).catch(function(err){
             console.log('There was an error reading the source file.:', err);
        })
     };
     getData();

最终的HTML代码:

<div class="w3-container" id="w00t" style="padding-bottom:100px;">
    <table class="w3-table w3-bordered w3-striped" id="1337" style="overflow: auto;">
        <thead>
            <tr>
                <th>Object1</th> //Any title/name you want to provide your data for viewing.
                <th>Object2</th>
            </tr>
        </thead>
        <tbody id="tbodyid">
            <tr>
                <td>[[Object_1]]</td> //This is the "title" of the JSON data pulled from the AlaSQL query against the spreasheet - this must match any header you want to pull content to display in a table format (with spaces or underscores or however the header is formatted). This will only pull the content for the table for each iteration of <td> that you do.
                <td>[[Object_2]]</td>
            </tr>
       </tbody>
    </table>
</div>

如果正确实施,以上代码将在所需站点的表中显示来自电子表格的数据。

事后可以根据表的内容做更多的工作(我已经做过)来进行条件格式设置(我很乐意分享,如果您有兴趣,请告诉我)。