相关疑难解决方法(0)

在内存中创建一个文件供用户下载,而不是通过服务器

有没有办法在客户端创建文本文件并提示用户下载它,而不与服务器进行任何交互?我知道我不能直接写入他们的机器(安全性和所有),但是我可以创建并提示他们保存它吗?

javascript web-applications file client-side

775
推荐指数
17
解决办法
39万
查看次数

在jQuery中导出到csv

我动态生成一个div,如:

<div id='PrintDiv'>
        <table id="mainTable">
            <tr>
                <td>
                    Col1
                </td>
                <td>
                    Col2
                </td>
                <td>
                    Col3
                </td>
            </tr>
            <tr>
                <td>
                    Val1
                </td>
                <td>
                    Val2
                </td>
                <td>
                    Val3
                </td>
            </tr>
            <tr>
                <td>
                    Val11
                </td>
                <td>
                    Val22
                </td>
                <td>
                    Val33
                </td>
            </tr>
            <tr>
                <td>
                    Val111
                </td>
                <td>
                    Val222
                </td>
                <td>
                    Val333
                </td>
            </tr>
        </table>
    </div>
Run Code Online (Sandbox Code Playgroud)

页面上还有更多元素.现在,我怎样才能获得这样的csv文件:

Col1,Col2,Col3
Val1,Val2,Val3
Val11,Val22,Val33
Val111,Val222,Val333
Run Code Online (Sandbox Code Playgroud)

使用jQuery?

需要一个文件保存dailog框,如下所示:

替代文字

谢谢.

javascript csv asp.net jquery

45
推荐指数
4
解决办法
12万
查看次数

如何在不崩溃浏览器的情况下使用IndexedDB创建一个非常长的字符串?

我正在编写一个Web应用程序,生成一个用户可以下载的潜在大文本文件,所有处理都在浏览器中完成.到目前为止,我能够以小块的形式读取超过1 GB的文件,处理每个块,逐步生成大量输出文件,并将增长的输出存储在IndexedDB中.我更天真的尝试将所有结果保存在内存中,然后在最后将它们序列化为文件,导致所有浏览器崩溃.

我的问题是双重的:

  1. 我可以追加到IndexedDB中的条目(字符串或数组)而不先将整个内容读入内存吗?现在,这个:

    task.dbInputWriteQueue.push(output);
    var transaction = db.transaction("files", "readwrite");
    var objectStore = transaction.objectStore("files");
    var request = objectStore.get(file.id);
    request.onsuccess = function()
    {
        request.results += nextPartOfOutput
        objectStore.put(request.results);
    };
    
    Run Code Online (Sandbox Code Playgroud)

    输出开始变大后导致崩溃.我可以在数据库中写一堆小条目,但是后来我不得不将它们全部读入内存,以便将它们连接起来.参见我的问题的第2部分......

  2. 我可以创建一个数据对象URL来引用IndexedDB中的值而不将该值加载到内存中吗?对于小字符串我可以做:

    var url = window.URL.createObjectURL(new Blob([myString]), {type: 'text/plain'});
    
    Run Code Online (Sandbox Code Playgroud)

    但对于大字符串,这并不太好.实际上,它在加载字符串之前崩溃了.似乎使用get()IndexedDB的大读取导致Chrome至少崩溃(甚至开发人员工具崩溃).

如果我使用Blob而不是字符串会更快吗?这种转换便宜吗?

基本上我需要一种方法,使用JavaScript,将一个非常大的文件写入磁盘,而不是在任何一点将整个内容加载到内存中.我知道你可以提供createObjectURL一个文件,但这在我的情况下不起作用,因为我正在从用户提供的文件中生成一个文件.

javascript indexeddb bloburls

29
推荐指数
1
解决办法
1636
查看次数

用于导出到CSV/Excel的数据URI(无服务器端请求):浏览器支持/限制?

问题如下:

正如所建议的那样,我正在考虑在客户端生成CSV文件内容,然后使用数据URI从浏览器中提示"打开Excel"操作.在阅读了浏览器中此功能(数据URI)的限制和不同级别的支持后,我想了解这项技术的第一手经验以及我要处理的事情.

谢谢.

javascript excel data-uri

10
推荐指数
1
解决办法
5693
查看次数

将HTML表导出到客户端的csv文件

我的网页上有一个html表.我需要一个导出功能,例如,用户可以选择打开或在按钮点击时将其保存在本地计算机上.由于我已经准备好了表格格式的数据,它需要读取它并使用浏览器功能将其导出到客户端本身,而不使用任何插件(jquery,..).纯JS将非常感激.

我的网页上的HTML表格:

<table id="incidents">
<tr>
<td>data1</td>
<td>data1</td>
<td>data1</td>
</tr>
<tr>
<td>data2</td>
<td>data2</td>
<td>data2</td>
</tr>
<tr>
<td>data3</td>
<td>data3</td>
<td>data3</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我需要将此表导出到客户端计算机上的csv或excel表中,并提供打开或保存选项

html javascript

4
推荐指数
1
解决办法
7867
查看次数