日期:2014-05-17  浏览次数:20545 次

求助一个复杂界面怎么导出word或excel

页面


就是一个表格,扔了一百多个label,再扔三个GridView组成。有没方便简便导出

------解决方案--------------------

    /// <summary>
    /// DataTable通过流导出Excel
    /// </summary>
    /// <param name="ds">数据源DataSet或者DataTable</param>
    /// <param name="columns">DataTable中列对应的列名(可以是中文),若为null则取DataTable中的字段名</param>
    /// <param name="fileName">保存文件名(例如:a.xls)</param>
    /// <returns></returns>
    public bool StreamExport(DataTable dt, ArrayList columns, string fileName, System.Web.UI.Page pages)
    {
        if (dt.Rows.Count > 65535) //总行数大于Excel的行数 
        {
            throw new Exception("预导出的数据总行数大于excel的行数");
        }
        if (string.IsNullOrEmpty(fileName)) return false;

        StringBuilder content = new StringBuilder();
        StringBuilder strtitle = new StringBuilder();
        content.Append("<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>");
        content.Append("<head><title></title><meta http-equiv='Content-Type' content=\"text/html; charset=gb2312\">");
        //注意:[if gte mso 9]到[endif]之间的代码,用于显示Excel的网格线,若不想显示Excel的网格线,可以去掉此代码
        content.Append("<!--[if gte mso 9]>");
        content.Append("<xml>");
        content.Append(" <x:ExcelWorkbook>");
        content.Append("  <x:ExcelWorksheets>");
        content.Append("   <x:ExcelWorksheet>");
        content.Append("    <x:Name>Sheet1</x:Name>");
        content.Append("    <x:WorksheetOptions>");
        content.Append("      <x:Print>");
        content.Append("       <x:ValidPrinterInfo />");
        content.Append("      </x:Print>");
 &n