以XML的形式输出EXCEL
XML里就是些Table标签,当然包括写 rowspan  colspan 等等。
现在输出EXCEL 2007 到一定位置时候出现(目前我的错位行在2213行),错列现象。
多数据导出都有这个问题。
  经调试:输出的数据是没有问题的。请高手指点这一现象。有必要我附图上来。谢谢各位!

解决方案 »

  1.   

    用什么方法输出的?是dataset自带的方法吗?如果不是自带方法就检查代码吧
      

  2.   

    记得数据里有换行,比如\r\n,\n什么的,如果都给他换了就没毛病了...
    不过往回倒时就- -
      

  3.   

    你把Table表格单独显示检查一下看看表格是否错位。
    最好把你错的图发出来看看,不然不好说
      

  4.   

    HttpContext.Current.Response.Write(tw.ToString());
    这种方法本身还是html,只是excel兼容html才能在Excel里显示的
    另存的时候有2种xml,换另外一种表格xml
      

  5.   


    怎么意思?可以在详细点么?由于XML文件太多。我发不了给你们,郁闷。
      

  6.   

    2213行的错误数据能截张图发上来吗?最近也在做这个导出Excel而且也碰到过这个问题,就是读出来时,错位的数据是带着换行符(\r\n)出来的
      

  7.   

    输出方式:
    我建立了一个一般处理程序(.ashx)文件,包含:    public void ProcessRequest(HttpContext context)
        {
            string dataKey = context.Request["datakey"] != null ? context.Request["datakey"] : "";        SortedList<string, string> excelData = context.Application["ExcelData"] as SortedList<string, string>;        if (dataKey == "" || excelData == null)
            {
                context.Response.Write("导出数据已失效!");
                context.Response.End();
            }
            context.Response.Clear();
            context.Response.Buffer = true;
            context.Response.Charset = "UTF8";
            context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("Excel导出数据.xls", System.Text.Encoding.UTF8));
            context.Response.ContentEncoding = System.Text.Encoding.UTF8;
            context.Response.ContentType = "application/ms-excel";
            context.Response.Write(excelData[dataKey]);        excelData.Remove(dataKey);
            context.ApplicationInstance.CompleteRequest();    }
      

  8.   

    在我的app_code服务类里写的ExportExcelData类,包含:
    private string ExportExcelData(string template, string templateHandler, JsonArray data)
        {
            XmlDocument templateDoc = new XmlDocument();        templateDoc.Load(HttpContext.Current.Server.MapPath("../Export/Template/" + template + ".xml"));        MethodInfo method = typeof(ExportService).GetMethod(templateHandler);        if (method != null)
                method.Invoke(null, new object[] { templateDoc, data });
            XmlNodeList cols = templateDoc.SelectNodes("//td[@class='field']");        foreach (object obj in data)
            {
                JsonObject dataRow = obj as JsonObject;            XmlElement row = templateDoc.CreateElement("tr");            templateDoc.SelectSingleNode("//table").AppendChild(row);            foreach (XmlNode col in cols)
                {
                    XmlElement cell = templateDoc.CreateElement("td");                row.AppendChild(cell);                string field = (col as XmlElement).GetAttribute("id");                if (dataRow.Contains(field))
                    {
                        cell.InnerText = dataRow[field] != null ? dataRow[field].ToString() : "";
                    }
                }
            }        if (HttpContext.Current.Application["ExcelData"] == null)
                HttpContext.Current.Application["ExcelData"] = new SortedList<string, string>();        string dataKey = Guid.NewGuid().ToString();        (HttpContext.Current.Application["ExcelData"] as SortedList<string, string>)
                .Add(dataKey, templateDoc.OuterXml);        return dataKey;
        }
      

  9.   

    然后有一个 模版文件夹 包含一个 XML 的模版,就是一堆Table标签。太多就不发了。
      

  10.   

    -____-果然一个毛病我这边暂时的处理方法是string temp_2 = tempString.Replace("\r\n", " ").Replace("\n", " ").Replace("\"", " ");把双引号,\r\n,\n这三个都先换成空格…勉强可以输出正常数据不过这数据再导入就没格式了