我正在内部网站上工作,该网站需要专门从静态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], [...]
答案 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>
如果正确实施,以上代码将在所需站点的表中显示来自电子表格的数据。
事后可以根据表的内容做更多的工作(我已经做过)来进行条件格式设置(我很乐意分享,如果您有兴趣,请告诉我)。