首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

gridview导出excel有关问题相关

2012-04-02 
gridview导出excel问题相关。导出方法如下:Response.Clear()Response.Buffer falseResponse.Charset

gridview导出excel问题相关。
导出方法如下: 
  Response.Clear();
  Response.Buffer = false;
  Response.Charset = "utf-8";
  Response.AppendHeader("Content-Disposition", "attachment;filename=自检统计报表.xls");
  Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
  Response.ContentType = "application/ms-excel";
  Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");
  this.EnableViewState = false;
  System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
  HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
  GridView1.Columns[6].Visible = false;
  GridView1.Columns[7].Visible = false;
  GridView1.RenderControl(oHtmlTextWriter);
  Response.Write(oStringWriter);
  Response.End();
  public override void VerifyRenderingInServerForm(Control control)
  {
  //base.VerifyRenderingInServerForm(control);
  }
  页面上:首行加了 EnableEventValidation = "false" 出现问题了
  1.导出的文件名都是乱码,但是内容确实正确的
  2.导出的文件有分页、、、还有后面我写的【详细】等等。这个怎么弄呀?

[解决办法]

C# code
// <summary>        /// 导出Excel        /// </summary>        /// <param name="dtTemp"></param>        /// <param name="ServerPath"></param>        /// <param name="TextName"></param>        /// <param name="fc">将number格式化成string</param>        public static void ExportTasks(System.Data.DataSet ds, string ServerPath, string TextName, int fc, string [] sName)        {            // 定义要使用的Excel 组件接口            // 定义Application 对象,此对象表示整个Excel 程序            Application excelApp = null;            // 定义Workbook对象,此对象代表工作薄            Workbook workBook;            // 定义Worksheet 对象,此对象表示Execel 中的一张工作表            Worksheet ws = null;            //定义Range对象,此对象代表单元格区域            Range range;                        try            {                excelApp = new Application();                workBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);                for (int d = 0; d<ds.Tables.Count; d++)                {                                       System.Data.DataTable dtTemp = ds.Tables[d];                    int dcell = 1;                    int rowindex = 0; int colindex = 0;                    int rowcount = dtTemp.Rows.Count;                    int colcount = dtTemp.Columns.Count;                    //初始化 Application 对象 excelApp                                        //在工作薄的第一个工作表上创建任务列表                                       //workBook.Worksheets.Count                    ws = (Worksheet)workBook.Worksheets[d+1];                    // 命名工作表的名称为                    if (sName.Length >= d)                    {                        ws.Name = !string.IsNullOrEmpty(sName[d]) ? sName[d] : "Sheet"+(d+1).ToString();                    }                    else                        ws.Name = "Sheet" + (d + 1).ToString();                    //创建缓存                    Object[,] objdata = new object[rowcount + 1, colcount];                    //创建标题                    foreach (System.Data.DataColumn dc in dtTemp.Columns)                    {                        objdata[rowindex, colindex++] = dc.ColumnName;                    }                    //获取数据                    for (int i = 0; i < rowcount; i++)                    {                        dcell = 0;                        for (int j = 0; j < colcount; j++)                        {                            objdata[i + 1, dcell++] = dtTemp.Rows[i][dtTemp.Columns[j].ColumnName].ToString();                        }                    }                    //写入Excel                                range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[rowcount + 1, colcount]);                    //range.NumberFormatLocal = "@";//所有字段格式化为文本格式                    ws.get_Range(excelApp.Cells[2, fc], excelApp.Cells[rowcount + 1, fc]).NumberFormatLocal = "@";                    range.Value2 = objdata;                    System.Windows.Forms.Application.DoEvents();                    //标题粗体                    range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[1, colcount]);                    range.Font.Bold = true;                    //全局左对齐                    excelApp.Cells.HorizontalAlignment = Constants.xlLeft;                    excelApp.Cells.EntireColumn.AutoFit();                    //边线                    range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[rowcount + 1, colcount]);                    range.Borders.LineStyle = 1;                }                workBook.SaveCopyAs(ServerPath.Replace("//", "\\") + TextName + ".xls");                workBook.Close(false, null, null);                excelApp.Quit();                ws = null;            }            catch (Exception ex)            {                WriteLog.SetErrorMsg("ExportTasks", "", ex.Message);   //处理错误                               excelApp.Quit();                throw ex;            }        } 

热点排行