jQuery MiniUI

标题: 本人提供一个miniui的excel导出工具支持各种语言 [打印本页]

作者: sunxue299    时间: 2019-1-14 15:34:34     标题: 本人提供一个miniui的excel导出工具支持各种语言

之前看了官网上提供的一个Excel导出工具,挺好的,支持多行表头导出,但是那个后台是.net写的,我用的是Java,所以我不能用。[attach]11874[/attach]

后来我看了.net 的源码,自己根据它写了一个js的Excel导出util,该Util只需要调一个方法,传两个参数(datagrid的id,data数据),就可以导出了。完美支持.net java php 。
下面分享一下,希望版主给个好评



[attach]11875[/attach]



作者: sunxue299    时间: 2019-1-14 15:35:26

本帖最后由 sunxue299 于 2019-1-14 16:28 编辑

最新的一个,调用文件中前两个方法即可[attach]11876[/attach]

作者: 121585357    时间: 2019-2-16 15:50:52

sunxue299 发表于 2019-1-14 15:35
最新的一个,调用文件中前两个方法即可

厉害,亲测,好用,谢谢
作者: 魔力睿睿    时间: 2019-2-18 09:10:48

多谢分享,先留着!
作者: trjf2008    时间: 2019-5-8 22:11:31

我是PHP,如何导出,能给个实例吗?
作者: sunxue299    时间: 2019-5-9 11:39:03

trjf2008 发表于 2019-5-8 22:11
我是PHP,如何导出,能给个实例吗?

不管是什么语言,你只要后台返回指定格式的数据就行了
作者: 18754583027    时间: 2019-9-18 10:08:46

sunxue299 发表于 2019-1-14 15:35
最新的一个,调用文件中前两个方法即可

[attach]12441[/attach]
作者: 18754583027    时间: 2019-9-18 10:13:56

sunxue299 发表于 2019-1-14 15:35
最新的一个,调用文件中前两个方法即可

大神,这个方法导出的表格第二列为什么会有函数?求告知[attach]12442[/attach]
作者: mini_cxq    时间: 2019-9-20 10:01:04

我也试了,很厉害但是我的直接在浏览器打开了,怎么回事?
点下载出现文件名称太长,这个文件名在哪儿生成的?
[attach]12443[/attach]

[attach]12444[/attach]


作者: sunxue299    时间: 2019-9-20 15:04:08

mini_cxq 发表于 2019-9-20 10:01
我也试了,很厉害但是我的直接在浏览器打开了,怎么回事?
点下载出现文件名称太长,这个文件名在哪儿生成 ...

我用的上好的,看看自己的用法是不是错了
作者: sunxue299    时间: 2019-9-20 15:04:43

18754583027 发表于 2019-9-18 10:13
大神,这个方法导出的表格第二列为什么会有函数?求告知

我用的上好的,看看自己的用法是不是错了
作者: mini_cxq    时间: 2019-9-22 12:12:31

sunxue299 发表于 2019-9-20 15:04
我用的上好的,看看自己的用法是不是错了

页面引入js
//调以下两个方法进行生成表 下载表
//str = ExportTable(data,ExportExcel(grid));
//downloadExcel(str)
页面调用
function miniExcel(){
                var data = grid.getData();
                var str = ExportTable(data,ExportExcel(grid));
                        downloadExcel(str)
        }
作者: yahuadai    时间: 2019-9-25 16:18:45

此做法,只能限部分浏览器行,其它浏览是不行的。
作者: sunxue299    时间: 2019-9-26 16:53:38

mini_cxq 发表于 2019-9-20 10:01
我也试了,很厉害但是我的直接在浏览器打开了,怎么回事?
点下载出现文件名称太长,这个文件名在哪儿生成 ...

最近我发现了一个新的导出excel框架,非常强大。js-xlsx,你可以研究一下
作者: mini_cxq    时间: 2019-9-29 11:02:07

sunxue299 发表于 2019-9-26 16:53
最近我发现了一个新的导出excel框架,非常强大。js-xlsx,你可以研究一下

非常感谢,确实很强大
作者: a8547086    时间: 2019-10-12 15:29:46

提几个问题,type列和隐藏列不应该导出,需要去掉这种列。
json数据格式中在包含json数据无法显示。
最好再提供一个可合并单元格的方法(不过这种很麻烦)。
很厉害的大神,我是做不出来!
作者: ntdg    时间: 2020-8-28 20:37:33

本帖最后由 ntdg 于 2020-8-28 20:51 编辑
mini_cxq 发表于 2019-9-20 10:01
我也试了,很厉害但是我的直接在浏览器打开了,怎么回事?
点下载出现文件名称太长,这个文件名在哪儿生成 ...

把这个函数改成这样就可以了
function downloadExcel(filename,str){
    var explorer = window.navigator.userAgent;
    if (explorer.indexOf("MSIE") >= 0) {
        try {
            var winname = window.open('', '_blank', 'top=10000');
            winname.document.open('application/vnd.ms-excel', 'export excel');
            winname.document.writeln(str);
            winname.document.execCommand('saveas', '', filename + '.xls');
            winname.close();
        } catch (e) {
            alert(e.description);
        }
    }else {
        var uri = 'data:application/vnd.ms-excel;base64,';
        var ctx = {worksheet: 'sheet', str: str};
        format(template, ctx)
        // window.location.href = uri + base64(str)
        $("body").append('<a id="downloadExcel" target="_self"></a>');
        $("#downloadExcel").attr("href", uri + base64(str));
        $("#downloadExcel").attr("download", filename + ".xls");
        $("#downloadExcel")[0].click();
    }
}
作者: james0216    时间: 2020-9-17 10:57:26

sunxue299 发表于 2019-5-9 11:39
不管是什么语言,你只要后台返回指定格式的数据就行了

这个可以指定输入文件名称吗
作者: lzw19900522    时间: 2020-9-25 14:49:40

sunxue299 发表于 2019-9-26 16:53
最近我发现了一个新的导出excel框架,非常强大。js-xlsx,你可以研究一下

你这个还是有点BUG   createTableSpan 方法里面你判断了跨列就不跨行,不然就一定跨行。这里是有问题的,特别是多表头的时候.
作者: james0216    时间: 2020-9-27 09:32:51

sunxue299 发表于 2019-1-14 15:35
最新的一个,调用文件中前两个方法即可

你这个对文件大小有要求吗 我下载文件小的可以 文件大的 页面直接变成空白了
作者: james0216    时间: 2020-9-27 11:07:18

sunxue299 发表于 2019-1-14 15:35
最新的一个,调用文件中前两个方法即可

文件是不是超过一定大小 就下载不了了 刚测试是这样的
作者: sunxue299    时间: 2020-9-29 17:23:48

james0216 发表于 2020-9-27 09:32
你这个对文件大小有要求吗 我下载文件小的可以 文件大的 页面直接变成空白了 ...

给你提供个方法:不会因为数据大而崩溃
//param1文件名,param2:内容的base64字符串
downloadFile(fileName, content) {
                let aLink = document.createElement('a');
                let blob = this.base64ToBlob(content); //new Blob([content]);
                let evt = document.createEvent("HTMLEvents");
                evt.initEvent("click", true, true);//initEvent 不加后两个参数在FF下会报错  事件类型,是否冒泡,是否阻止浏览器的默认行为
                aLink.download = fileName;
                aLink.href = URL.createObjectURL(blob);
                aLink.click()
        }
作者: james0216    时间: 2020-9-30 10:03:34

sunxue299 发表于 2020-9-29 17:23
给你提供个方法:不会因为数据大而崩溃
//param1文件名,param2:内容的base64字符串
downloadFile(fileN ...

非常感谢 你提供的方法 我后面试下
作者: lhyd1234    时间: 2020-12-8 18:56:12

楼主,能指定下载文件的文件名吗???




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2