http://topic.csdn.net/u/20071229/11/531cda42-d423-48e5-ad8c-bf269fa5bde6.html?1126264393
我用这种方法输入了Excel
输出是输出是但是他们的单元格大小不适合所以问:
如何给单元格设置大小
如何给单无格设置颜色
还有最前我添加了一个单元格,如何让这个单元格合并4个单元格谢谢

解决方案 »

  1.   


    public static void CreateExcel(DataSet ds, string FileName)
    {
        HttpResponse resp;
        resp =System.Web.HttpContext.Current.Response;
        resp.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
        resp.ContentType = "application/ms-excel";
        string colHeaders = "", ls_item = "";
        int i = 0;    //定义表对象与行对像,同時用DataSet对其值进行初始化 
        DataTable dt = ds.Tables[0];
        DataRow[] myRow = dt.Select("");    //取得数据表各列标题,各标题之間以\t分割,最后一个列标题后加回车符 
        for (i = 0; i <= dt.Columns.Count - 1; i++)
        {
            if (i != dt.Columns.Count - 1)
                colHeaders = dt.Columns[i].Caption.ToString() + "\t";
            else
                colHeaders = dt.Columns[i].Caption.ToString() + "\n";
            //向HTTP输出流中写入取得的数据信息 
            resp.Write(colHeaders);    }
        //逐行处理数据 
        for (i = 0; i < dt.Rows.Count; i++)
        {
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                if (j != dt.Columns.Count - 1)
                {
                    //比較長的數字,轉到Excel成科學計數法了,加'把它變成字符
                    if (j == 0)
                        ls_item = "'" + dt.Rows[i][j].ToString() + "\t";
                    else
                        ls_item = dt.Rows[i][j].ToString() + "\t";
                }
                else
                    ls_item = dt.Rows[i][j].ToString() + "\n";            //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 
                resp.Write(ls_item);
                ls_item = "";        }
        }
        resp.End();
    }
      

  2.   

    所谓的Response.Write输出,就是输出HTML让Excel以兼容方式识别,你用HTML方式处理就是了。HTML里面,通过width和height控制单元格长宽,通过rowspan和colspan控制单元格合并。
      

  3.   

    用这种导出方式,其实就是个html的table
    单元格就是td,大小颜色跨行和html一样