• GridView导出到excel


    将web页面的GridView导出到excel文件,包括GridView中checkbox,image的处理。

    public static void Export(Control control, string defaultFileName)
        {
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.BufferOutput = true;
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + defaultFileName);
    
            HttpContext.Current.Response.ContentType = "application/ms-excel";
            control.EnableViewState = false; 
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
            System.IO.StringWriter stringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter textWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
            control.RenderControl(textWriter);
            string result = stringWriter.ToString();
            result = SpecialHandler(result);
    
            HttpContext.Current.Response.Write(string.Format(ExportToExcelHelper.BasicHTML, result));
    
            HttpContext.Current.Response.End();
        }
    
        private static string SpecialHandler(string result)
        {
            //把checkbox改成文字Yes/No
            result = Regex.Replace(result, "<input.*checked=\"checked\".*?/>", "Received&nbsp;/", RegexOptions.IgnoreCase);
            result = Regex.Replace(result, "<input.*type=\"checkbox\".*?/>", "Not received&nbsp;/", RegexOptions.IgnoreCase);
            result = result.Replace("&nbsp;&nbsp;", "");
    
            //替换掉链接和外围的div
            result = Regex.Replace(result, "<a.*?\">", "", RegexOptions.IgnoreCase);
            result = Regex.Replace(result, "<div>|</div>|</a>|<span.*?>|</span>|\n", "", RegexOptions.IgnoreCase);
    
            //TODO:处理图片,把图片替换成文字
            string replaceText = string.Empty;
            Regex re = new Regex("<img.*?/>", RegexOptions.None);
    
            //行标题特殊处理
            Regex re2 = new Regex("<th.*?</th>", RegexOptions.None);
            
            return result;
        }
    
        public static string BasicHTML
        {
            get
            {
                return @"<html xmlns:x='urn:schemas-microsoft-com:office:excel'>
                            <head>
                                <meta http-equiv=Content-Type content='text/html;charset=utf-8'>
                                <!--[if gte mso 9]><xml>
                                    <x:ExcelWorkbook>
                                        <x:ExcelWorksheets>
                                            <x:ExcelWorksheet>
                                                <x:Name>Worksheet</x:Name>
                                                <x:WorksheetOptions>
                                                    <x:Print>
                                                        <x:ValidPrinterInfo />
                                                    </x:Print>
                                                </x:WorksheetOptions>
                                            </x:ExcelWorksheet>
                                        </x:ExcelWorksheets>
                                    </x:ExcelWorkbook>
                                </xml>
                                <![endif]-->
                            </head>
                            <body>
                                {0}
                            </body>
                        </html>";
            }
        }
  • 相关阅读:
    xml技术基础
    apue第七章学习总结
    自然连接,外部连接,内连接,左右连接的区别与介绍(转)
    apue第六章学习总结
    《深入PHP与jQuery开发》读书笔记——Chapter2
    apue第四章学习总结
    《深入PHP与jQuery开发》读书笔记——Chapter1
    我所使用的一个通用的Makefile模板
    PHP的输出缓冲区(转)
    Nginx 日志按月分割
  • 原文地址:https://www.cnblogs.com/michelledawm/p/4239207.html
Copyright © 2020-2023  润新知