无法从响应流生成只读工作表

时间:2013-07-25 04:55:10

标签: asp.net c#-4.0 httpcontext

我无法将导出的excel文件设为只读。下面是我导出excel文件的代码。

  private void ExporttoExcel(DataTable table)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.Buffer = true;
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        HttpContext.Current.Response.Write(@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">");
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=Accounts.xls");

        HttpContext.Current.Response.Charset = "utf-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");
        //sets font
        HttpContext.Current.Response.Write("<font style='font-size:10.0pt; font-family:Calibri;'>");
        HttpContext.Current.Response.Write("<BR><BR><BR>");
        //sets the table border, cell spacing, border color, font of the text, background, foreground, font height
        HttpContext.Current.Response.Write("<Table border='1' bgColor='#ffffff' " +
          "borderColor='#000000' cellSpacing='0' cellPadding='0' " +
          "style='font-size:10.0pt; font-family:Calibri; background:white;'> <TR>");
        //am getting my grid's column headers
        int columnscount = table.Columns.Count;// here
        HttpContext.Current.Response.Write("<font color='red' style='font-size:20.0pt;  font-family:Calibri;'>");
        HttpContext.Current.Response.Write("<Center>");
        HttpContext.Current.Response.Write("Kashmir Medical Representatives Association");

        HttpContext.Current.Response.Write("<BR/>");

        HttpContext.Current.Response.Write("Accounts");
        HttpContext.Current.Response.Write("</Center>");
        HttpContext.Current.Response.Write("</font>");
        for (int j = 0; j < columnscount - 1; j++)
        {      //write in new column
            HttpContext.Current.Response.Write("<Td>");
            //Get column headers  and make it as bold in excel columns
            HttpContext.Current.Response.Write("<Center>");
            HttpContext.Current.Response.Write("<B>");
            HttpContext.Current.Response.Write(table.Columns[j].Caption.ToString()); //
            HttpContext.Current.Response.Write("</B>");
            HttpContext.Current.Response.Write("</Center>");
            HttpContext.Current.Response.Write("</Td>");
        }
        HttpContext.Current.Response.Write("</TR>");
        foreach (DataRow row in table.Rows)
        {//write in new row
            HttpContext.Current.Response.Write("<TR>");
            for (int i = 0; i < table.Columns.Count - 1; i++)
            {
                HttpContext.Current.Response.Write("<Td>");
                HttpContext.Current.Response.Write(row[i].ToString());
                HttpContext.Current.Response.Write("</Td>");
            }

            HttpContext.Current.Response.Write("</TR>");
        }
        HttpContext.Current.Response.Write("</Table>");
        HttpContext.Current.Response.Write("</font>");

        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.End();
    }


   protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt = (DataTable)Session["data"];
        ExporttoExcel(dt);  
    }

在使用HttpContext.Current.Response.Flush();将数据刷新到客户端之前,我想将其设为Readonly

0 个答案:

没有答案