posts - 710,  comments - 81,  views - 260万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1>通过js实现,在页面的前台调用微软office的com组件,要求用户必须安装office,启动automation服务,并且在浏览器中启用未注册的activex选项.

复制代码
function importToExcel(tableid) {
    var curTbl = document.getElementById(tableid);
    try {
        var oXL = new ActiveXObject("Excel.Application");
    }
    catch (e) {
        alert("请安装微软Excel并且在浏览器的安全级别中启用‘对未标记为安全执行脚本的ActiveX控件初始化并执行脚本’的安全选项");
        return;
    }
    var oWB = oXL.Workbooks.Add();
    var oSheet = oWB.ActiveSheet;

    var sel = document.body.createTextRange();
    sel.moveToElementText(curTbl);
    sel.select();
    sel.execCommand("Copy");

    oSheet.Paste();
    oXL.Visible = true;
}

function importToWord(tableid) {
    var curTbl = document.getElementById(tableid);
    try {
        var oWD = new ActiveXObject("Word.Application");
    } catch (e) {
        alert("请安装微软Word并且在浏览器的安全级别中启用‘对未标记为安全执行脚本的ActiveX控件初始化并执行脚本’的安全选项");
        return;
    }
    var oDC = oWD.Documents.Add("", 0, 1);
    var oRange = oDC.Range(0, 1);

    var sel = document.body.createTextRange();
    sel.moveToElementText(curTbl);
    sel.select();
    sel.execCommand("Copy");

    oRange.Paste();
    oWD.Application.Visible = true;
}  
复制代码

 

 

2>在服务器端实现,服务器端需要安装office,客户端不需要安装office,将需要保存的文本,以流的形式输出到页面,然后保存为指定的文件类型。输出的时候必须加上<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=gb2312\"/>,否则会乱码

复制代码
        /// <summary>
        /// 将html导出Excel
        /// </summary>
        /// <param name="content">html内容</param>
        /// <param name="FileName">导出时的默认文件名</param>
        public void ExportToExcel(string content, string FileName)
        {

_context.Response.AppendHeader("Content-Disposition",
string.Format("attachment;filename={0}", HttpUtility.UrlPathEncode(filename)));
_context.Response.ContentType = string.Format("application/vnd.ms-{0}", type);
_context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
_context.Response.Charset = "gb2312";

_context.Response.Write(string.Format("<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=gb2312\"/>{0}", 

Microsoft.JScript.GlobalObject.unescape(_context.Request["data"])));
_context.Response.End();

        }
复制代码
posted on   itprobie-菜鸟程序员  阅读(3133)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示