当前位置:编程学习 > C#/ASP.NET >>

急急急:输出EXCEL,列数据错位.

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

请高手指点这一现象。有必要我附图上来。谢谢各位! --------------------编程问答-------------------- ??问题说得不清楚? --------------------编程问答-------------------- 用什么方法输出的?是dataset自带的方法吗?如果不是自带方法就检查代码吧 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 有代码否? --------------------编程问答-------------------- 记得数据里有换行,比如\r\n,\n什么的,如果都给他换了就没毛病了...
不过往回倒时就- - --------------------编程问答-------------------- 你把Table表格单独显示检查一下看看表格是否错位。
最好把你错的图发出来看看,不然不好说 --------------------编程问答-------------------- 错列现象是多一列还是少一列?
--------------------编程问答-------------------- HttpContext.Current.Response.Write(tw.ToString());
这种方法本身还是html,只是excel兼容html才能在Excel里显示的
另存的时候有2种xml,换另外一种表格xml
--------------------编程问答-------------------- 从2213行开始就把,上面的列,放到了2214以下了。。乱套了, --------------------编程问答--------------------
引用 9 楼 wuyq11 的回复:
HttpContext.Current.Response.Write(tw.ToString());
这种方法本身还是html,只是excel兼容html才能在Excel里显示的
另存的时候有2种xml,换另外一种表格xml


怎么意思?可以在详细点么?由于XML文件太多。我发不了给你们,郁闷。 --------------------编程问答--------------------
引用 8 楼 jls6810 的回复:
错列现象是多一列还是少一列?

多行了。他就是把某列的内容移到了下 一行,乱了。 --------------------编程问答-------------------- 2213行的错误数据能截张图发上来吗?最近也在做这个导出Excel

而且也碰到过这个问题,就是读出来时,错位的数据是带着换行符(\r\n)出来的 --------------------编程问答-------------------- 嗯.没试过..也许是换行符(\r\n)惹出来的
--------------------编程问答-------------------- 输出方式:
我建立了一个一般处理程序(.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();

    }
--------------------编程问答-------------------- 在我的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;
    } --------------------编程问答-------------------- 然后有一个 模版文件夹 包含一个 XML 的模版,就是一堆Table标签。太多就不发了。 --------------------编程问答-------------------- -____-果然一个毛病

我这边暂时的处理方法是

string temp_2 = tempString.Replace("\r\n", " ").Replace("\n", " ").Replace("\"", " ");

把双引号,\r\n,\n这三个都先换成空格…勉强可以输出正常数据

不过这数据再导入就没格式了 --------------------编程问答--------------------
引用 18 楼 chaios 的回复:
-____-果然一个毛病

我这边暂时的处理方法是

C# code

string temp_2 = tempString.Replace("\r\n", " ").Replace("\n", " ").Replace("\"", " ");


把双引号,\r\n,\n这三个都先换成空格…勉强可以输出正常数据

不过这数据再导入就没格式了

...........这么神奇? 我试试。 --------------------编程问答--------------------
引用 18 楼 chaios 的回复:
-____-果然一个毛病

我这边暂时的处理方法是

C# code

string temp_2 = tempString.Replace("\r\n", " ").Replace("\n", " ").Replace("\"", " ");


把双引号,\r\n,\n这三个都先换成空格…勉强可以输出正常数据

不过这数据再导入就没格式了


没有啊,怎么替换?
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,