internal class DownloadHandler : IDownloadHandler
    {
        public DownloadHandler()
        {
        }

public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
        {
            WebBrowser ie = new WebBrowser();
            ie.Navigate(downloadItem.Url);

string strrtn = System.Web.HttpUtility.UrlDecode(downloadItem.Url);

if (strrtn.Contains("data:text/csv;charset=utf-8,"))
            {
                strrtn = strrtn.Replace("data:text/csv;charset=utf-8,", "");

string[] striparr = strrtn.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                DataTable dt = new DataTable();

string[] strcolhead = striparr[0].Split(',');
                foreach (string str in strcolhead)
                {
                    dt.Columns.Add(str);
                }
                for (int i = 1; i < striparr.Length; i++)
                {
                    DataRow dr = dt.NewRow();
                    string[] array = striparr[i].Split(',');
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        dr[j] = array[j];
                    }
                    dt.Rows.Add(dr);
                }

if (dt != null && dt.Rows.Count > 0)
                {

#region   验证可操作性

//申明保存对话框
                    SaveFileDialog dlg = new SaveFileDialog();
                    //默然文件后缀
                    dlg.DefaultExt = "xls";
                    //文件后缀列表
                    dlg.Filter = "EXCEL文件(*.XLS)|*.xls";
                    //默然路径是系统当前路径
                    //dlg.InitialDirectory = Directory.GetCurrentDirectory();
                    dlg.FileName = "管网设备.xls";
                    //打开保存对话框
                    if (dlg.ShowDialog() == DialogResult.Cancel) return;
                    //返回文件路径
                    string fileNameString = dlg.FileName;
                    //验证strFileName是否为空或值无效
                    if (string.IsNullOrEmpty(fileNameString.Trim()))
                    { return; }
                    //验证strFileName是否包含文件后缀            
                    if (fileNameString.IndexOf(".") > 0)
                    {
                        string ext = fileNameString.Substring(fileNameString.LastIndexOf(".") + 1, fileNameString.Length - (fileNameString.LastIndexOf(".") + 1));

if (ext.Trim() != "xls" && ext.Trim() != "XLS" && ext.Trim() != "Xls" && ext.Trim() != "XLs" && ext.Trim() != "xLS" && ext.Trim() != "xlS")
                        {
                            MessageBox.Show("保存Excel文件名称错误", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                    }
                    string fileNameExt = fileNameString.Substring(fileNameString.LastIndexOf("\\") + 1);
                    if (fileNameExt.IndexOf(".") == 0)
                    {
                        MessageBox.Show("请输入文件名", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                    //定义表格内数据的行数和列数
                    int rowscount = dt.Rows.Count;
                    int colscount = dt.Columns.Count;
                    //行数必须大于0
                    if (rowscount <= 0)
                    {
                        MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

//列数必须大于0
                    if (colscount <= 0)
                    {
                        MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

//行数不可以大于65536
                    if (rowscount > 65536)
                    {
                        MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

//列数不可以大于255
                    if (colscount > 255)
                    {
                        MessageBox.Show("数据记录行数太多,不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

//验证以fileNameString命名的文件是否存在,如果存在删除它
                    FileInfo file = new FileInfo(fileNameString);
                    if (file.Exists)
                    {
                        try
                        {
                            file.Delete();
                        }
                        catch (Exception error)
                        {
                            MessageBox.Show(error.Message, "删除失败 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                    #endregion

try
                    {
                        GemBoxExcelLiteHelper.SaveToXls(fileNameString, dt);
                    }
                    catch (Exception error)
                    {
                        MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    MessageBox.Show(fileNameString + "\n\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
                else
                {
                    SysMessageBox.Error("无数据");
                }

}

}
        public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
        {

}
        public bool OnDownloadUpdated(CefSharp.DownloadItem downloadItem)
        {
            return false;
        }
    }

internal class ImageDownloadHandler : IDownloadHandler
    {
        //public bool OnBeforeBrowse(IWebBrowser browser, IRequest request, NavigationType naigationvType, bool isRedirect)
        //{
        //    if (url.Contains("application/vnd.ms-excel;base64"))
        //    {
        //        string tmpContent = url;//获取传递上来的文件内容
        //        string contentHead = "data:application/vnd.ms-excel;base64,";
        //        int startIndex = tmpContent.IndexOf(contentHead);
        //        int name_StartIndex = tmpContent.IndexOf(contentHead) + contentHead.Length;
        //        int name_EndIndex = tmpContent.IndexOf('#');
        //        string fileName = "Excel表格";
        //        if (name_EndIndex != -1)
        //        {
        //            fileName = Uri.UnescapeDataString(tmpContent.Substring(name_StartIndex, name_EndIndex - name_StartIndex));
        //            tmpContent = tmpContent.Substring(name_EndIndex + 1);
        //        }
        //        else
        //        {
        //            tmpContent = tmpContent.Substring(name_StartIndex);
        //        }
        //        byte[] output = Convert.FromBase64String(tmpContent);
        //        SaveFileDialog dialog = new SaveFileDialog();
        //        dialog.FileName = fileName + ".xls";
        //        dialog.Filter = "(Excel文件)|*.xls";
        //        DialogResult result = dialog.ShowDialog();
        //        if (result == DialogResult.OK)
        //        {
        //            using (FileStream fs = new FileStream(dialog.FileName, FileMode.Create, FileAccess.Write))
        //            {
        //                fs.Write(output, 0, output.Length);
        //                fs.Flush();
        //            }
        //            return true;
        //        }
        //    }
        //    return false;
        //}
       
        public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
        {

if (!callback.IsDisposed)
            {
                using (callback)
                {
                    callback.Continue(@"C:\Users\" +
                            System.Security.Principal.WindowsIdentity.GetCurrent().Name +
                            @"\Downloads\" +
                            downloadItem.SuggestedFileName,
                        showDialog: true);
                }
            }
        }

public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
        {

}

public bool OnDownloadUpdated(CefSharp.DownloadItem downloadItem)
        {
            return false;
        }
    }

WEB页面下载内容导出excel的更多相关文章

  1. PHP关于web页面交互内容

    学php学了有一段时间了总结总结给大家分享一下 PHP中的引用 第一段程序: <?php $first_name="firstName"; $first=&$firs ...

  2. 在ASP.NET根据DataTable中的内容导出Excel

    前台代码: <asp:Button ID="btnExcel" runat="server" Text="Excel导出" CssCl ...

  3. js灵活打印web页面区域内容的通用方法

      我们做网站,经常需要打印页面指定区域的内容,而网上关于这块的说法很多,各种各样的打印控件也不少.但许多打印方案都不怎么好,至少我不喜欢,要么封装复杂,要么难以维护.正好现在的项目也需要用到 ...

  4. 使用web API和NPOI导出Excel

    使用MVC controller输出excel的例子,自不待言,例子满天飞. 由于本项目使用的是Asp.net MVC API,因此在本项目使用API,实现了文件下载功能.代码的原理很简单,基本上是老 ...

  5. 将页面的内容导出使用html2canvas+jsPDF

    第一首先是要引用 import jsPDF from 'jspdf' import html2canvas from 'html2canvas' import PDFJS from 'pdfjs-di ...

  6. web页面的数据从excel中读取

    # -*- coding: utf-8 -*- import xdrlib ,sysimport xlrdimport datetimeimport jsonimport conf,reimport ...

  7. Microsoft.Office.Interop.Excel的用法以及利用Microsoft.Office.Interop.Excel将web页面转成PDF

    1.常见用法           using Microsoft.Office.Interop.Excel; 1)新建一个Excel ApplicationClass ExcelApp = New A ...

  8. 利用Microsoft.Office.Interop.Excel 将web页面转成PDF

    网上有很多将Web页面转成PDF的方法,还有许多收费的第三方插件.其实利用Office 自带的将EXCEL发布成PDF的功能就可以实现,如果你的需求没有多复杂,可以采用笔者的方法. 首先将web页面h ...

  9. jxl导出Excel文件

    一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...

随机推荐

  1. 17. Vue2.4+新增属性$listeners

    现在我们来讨论一种情况,A组件与C组件怎么通信,我们有多少种解决方案? 我们使用VueX来进行数据管理,但是如果项目中多个组件共享状态比较少,项目比较小,并且全局状态比较少,那使用VueX来实现该功能 ...

  2. Python语言程序设计(笔记)

    1.平方根的格式化 知识点:平方根计算 pow(a,0.5)[可以计算负数,结果为复数] a**b 例题: 获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出.‪‬‪‬‪‬‪‬‪‬ ...

  3. php实现redis消息发布订阅

    基础介绍 Pub/Sub功能(means Publish, Subscribe)即发布及订阅功能 基于事件的系统中,Pub/Sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统 ...

  4. hdu3870 基于最短路的最小割

    题意:      给你一个平面图,让你输出(1,1),(n ,n)的最小割.. 思路:       看完题想都没想直接最大流,结果TLE,想想也是 G<400*400,400*400*4> ...

  5. Photoshop 第二课 工具-钢笔的使用

    钢笔的使用 钢笔→ 是一个非常实用(主要用于)但是非常难操作(会者不难哦~)的工具. 钢笔属性中有三种状态:1.路径:2.形状:3.像素.其中路径和形状是我们最常用的状态.路径是一条用来圈定需要操作的 ...

  6. 我的主站 SHARELIST -分享列表 (功能持续完善中 2019-11-24 版本0.3)

    网站地址: http://www.sharelist.link 网站地址二维码: 网站介绍和更新: http://106.13.105.156/sharelist.php?listid=5dbda96 ...

  7. XCTF-mfw

    mfw mfw是什么东西??? 看题: 进来只有几个标签,挨着点一遍,到About页面 看到了Git,猜测有git泄露,访问/.git/HEAD成功 上Githack,但是会一直重复 按了一次ctrl ...

  8. 【vue-08】vuex

    vuex的作用 简单理解,就是将多个组件共享的变量统一放到一个地方去管理,比如用户登录时的数据token. 快速上手 安装:npm install vuex 首先,我们在src文件夹下创建一个文件夹: ...

  9. 1 cmd

    打开cmd 在终端打开指定文件 按住alt+e打开我的电脑 ​ 补充: ​ 1.windows和+组合快捷键 放大镜,(同理windows -) 然后在地址栏输入cmd,回车即可 常用命令 #盘符切换 ...

  10. Could not contact [localhost:8005]. Tomcat may not be running.

    出错环境介绍: Tomcat-version:8.5.56 JDK-version:1.8.0_152 Linux:CentOS-7 错误信息 sh /opt/apache-tomcat-8.5.56 ...