急急急:输出EXCEL,列数据错位.
以XML的形式输出EXCELXML里就是些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以下了。。乱套了, --------------------编程问答--------------------
怎么意思?可以在详细点么?由于XML文件太多。我发不了给你们,郁闷。 --------------------编程问答--------------------
多行了。他就是把某列的内容移到了下 一行,乱了。 --------------------编程问答-------------------- 2213行的错误数据能截张图发上来吗?最近也在做这个导出Excel
而且也碰到过这个问题,就是读出来时,错位的数据是带着换行符(\r\n)出来的 --------------------编程问答-------------------- 嗯.没试过..也许是换行符(\r\n)惹出来的
--------------------编程问答-------------------- 输出方式:
我建立了一个一般处理程序(.ashx)文件,包含:
--------------------编程问答-------------------- 在我的app_code服务类里写的ExportExcelData类,包含:
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();
}
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这三个都先换成空格…勉强可以输出正常数据
不过这数据再导入就没格式了 --------------------编程问答--------------------
...........这么神奇? 我试试。 --------------------编程问答--------------------
没有啊,怎么替换?
补充:.NET技术 , ASP.NET