首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • [附代码]asp.net实现在线打开,以及保存Excel的功能?有些问题,请指教 [无满意答案结贴,结贴人:DemonAngle]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-14 11:56:44 楼主
    C# code
    protected void ButtonDummy_Click(object sender, EventArgs e) { try { //导出数据 string name = DateTime.Now.ToString("yyyymmddhhmmss"); string path = Server.MapPath("~/Upload/导出Excel/" + name + ".xls"); ToExcel(path); System.IO.FileInfo file = new System.IO.FileInfo(path); Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF8; // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name)); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", file.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(file.FullName); // 停止页面的执行 Response.Flush(); Response.End(); } catch (Exception ex) { ExceptionLogger.LogException("SaleReport.ButtonDummy_Click", new ZeroGlobalException(ExceptionType.UnknownError.ToString(), ex)); } }

    C# code
    /// <summary> /// 导出Excel /// </summary> private void ToExcel(string strExcelFileName) { try { object objOpt = Missing.Value; Application excel = new Application();//实例化一个Excel _Workbook wkb = excel.Workbooks.Add(objOpt); _Worksheet wks = (_Worksheet)wkb.ActiveSheet; #region 设置格式 wks = (_Worksheet)wkb.Worksheets.Add(Missing.Value, Missing.Value, 1, Missing.Value); wks.Name = "人员"; excel.get_Range(excel.Cells[1, 1], excel.Cells[1, 4]).MergeCells = true; wks.get_Range("A1", "L1").get_Value(System.Type.Missing); excel.Cells[1, 1] = "基本信息"; excel.Cells[6, 1] = "名字"; wkb.SaveAs(strExcelFileName, objOpt, null, null, null, null, XlSaveAsAccessMode.xlShared, null, null, null, null, null); wkb.Close(false, objOpt, objOpt); excel.Quit();



    1。在出现下载提示框后,如果点“打开”会提示,文件被锁定?如和解决呢?
    2。如果保存后,在本地打开,会提示“文件丢失”,基本都是些CSS文件。。。。。点“确定”,发现excel显示的是整个也面。
    60  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-14 12:09:281楼 得分:0
    该回复于2008-03-14 14:40:31被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-14 12:45:202楼 得分:0
    在服务器上打开正常吗?
    我觉得可能是生成的时候就出错了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hchxxzx
    • 等级:
    发表于:2008-03-16 23:40:053楼 得分:0
    EXCEL不能被你上述的两种办法打开并修改再保存。
    第一种方法,其实仅仅是显示,出现CSS文件丢失,是因为在该页面中,它的页面类型不再是html格式而是电子表格格式,链接不到你服务端的样式,一个解决的办法是把样式表直接写在页面中,或者不使用样式表。

    第二种方法,出现“文件被锁定”,是因为代码最后的quit并不能真正退出上一次打开的EXCEL进程。如何真正退出进程,目前还没有一个可行的办法。这种操作,非常容易出现服务器上多个EXCEL进程并存导致服务器死机,建议不要使用 。

    想要在B、S中直接打开表格、编辑、再保存,这是不现实的。
    不过有一些人制作了一些组件,倒是可以实现客户端打开编程保存回服务器,如果项目确实有此需求,请至网上找此类控件,一般都是需要花钱买。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-16 23:48:464楼 得分:0
    该回复于2008-03-17 08:34:39被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-17 15:21:015楼 得分:0
    Response.Write("var winname = window.open('', '_blank', 'top=10000,left=10000');")
    Response.Write("winname.document.open('text/html', 'replace');")
    While Not Rs.Eof
      If Rs(0) <>"" Then
          Response.Write("winname.document.writeln('" & Rs(0) & "');")里面写入图片啊地址 如下:
        Rs.MoveNext
      Wend
    把数据保存到导出数据.xls
    Response.Write("winname.document.execCommand('saveas','','导出数据.xls');")
    Response.Write("winname.close();")
    Response.Write("window.close();")
    Response.Write " </SCRIPT>"


    例子
    Response.Write("winname.document.writeln("" <img src='images/myphoto.jpg'>"");")
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved