V17.2 导出excel 报 hexadecimal value 0x00, is an invalid character
本帖最后由 ANET 于 2024-2-26 16:28 编辑问题描述:
AR Section Report, 同样的报表,导出 pdf/html正常,用ArExports.Excel.Section.XlsExport导出xls也没问题,
用ArExports.Excel.Section.XlsExport导出xlsx的时候报如下错误,仅少数报表有这个问题,其它大部分报表导出xlsx也正常,
System.Exception: Error running report ---> System.ArgumentException: '.', hexadecimal value 0x00, is an invalid character.
at System.Xml.XmlUtf8RawTextWriter.InvalidXmlChar(Int32 ch, Byte* pDst, Boolean entitize)
at System.Xml.XmlUtf8RawTextWriter.WriteElementTextBlock(Char* pSrc, Char* pSrcEnd) at System.Xml.XmlUtf8RawTextWriter.WriteString(String text) at System.Xml.XmlWellFormedWriter.WriteString(String text) at DocumentFormat.OpenXml.OpenXmlElement.WriteTo(XmlWriter xmlWriter) at DocumentFormat.OpenXml.OpenXmlCompositeElement.WriteContentTo(XmlWriter w) at DocumentFormat.OpenXml.OpenXmlElement.WriteTo(XmlWriter xmlWriter) at DocumentFormat.OpenXml.OpenXmlCompositeElement.WriteContentTo(XmlWriter w) at DocumentFormat.OpenXml.OpenXmlPartRootElement.WriteTo(XmlWriter xmlWriter) at DocumentFormat.OpenXml.OpenXmlPartRootElement.Save(Stream stream) at DocumentFormat.OpenXml.OpenXmlPartRootElement.SaveToPart(OpenXmlPart openXmlPart) at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.TrySavePartContent(OpenXmlPart part) at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.SavePartContents(Boolean save)
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Dispose(Boolean disposing) at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Dispose() at GrapeCity.ActiveReports.SpreadBuilder.I.?.?(Stream ?)
at GrapeCity.ActiveReports.SpreadBuilder.I.?.Export(Workbook workbook, Stream outputStream)
at ReportRunner.RunReport(SectionReport rpt, Boolean bGenerateStream, Boolean bSetExcelMinColWidth, Boolean bEnableExcelCellMerging) in C:\Code\AN\rserver-ii\RServerII\ReportRunnerBase.vb:line 1034 --- End of inner exception stack trace ---
at ReportRunner.RunReport(SectionReport rpt, Boolean bGenerateStream, Boolean bSetExcelMinColWidth, Boolean bEnableExcelCellMerging) in
想问下有没有参数设置啥的,让XML不用校验内容直接导出,我看网上有如下设置的:
XmlWriterSettings writerSettings = new XmlWriterSettings();
writerSettings.CheckCharacters = false;
但是咱们没直接用到这个类,想问下该如何设置,谢谢。
ANET 发表于 2024-2-27 16:37
谢谢。
同样的问题以前报过:
1. https://gcdn.grapecity.com.cn/showtopic-148719-2-1.html
您看一下您的数据是不是有乱码,因为导出XLSX文件首先需要打开XML SDK来执行,所以导出错误:
您看下您是不是有乱码或者特殊字符,有的话,您先处理一下,再试试看。
问题描述:区域报表导出 excel
问题解决:
您好,区域报表导出 excel 您参考一下下面的文档:
https://developer.mescius.com/activereportsnet/docs/latest/online/excel-export.html
本帖最后由 ANET 于 2024-2-27 16:41 编辑
谢谢。
同样的问题以前报过:
1. https://gcdn.grapecity.com.cn/showtopic-148719-2-1.html
2.https://gcdn.grapecity.com.cn/showtopic-26367-1-1.html
这个帖子最后也没说咋解决的,貌似是数据乱码造成的。
嗯,我看了,数据没问题,还在调查,数据没发现有乱码的,不知道是不是报表字段的Style属性中有乱码。 ANET 发表于 2024-2-28 11:02
嗯,我看了,数据没问题,还在调查,数据没发现有乱码的,不知道是不是报表字段的Style属性中有乱码。
不仅是乱码,还有特殊字符,比如 &>< " '这些好像也是不支持的。如果有的话,您看是不是可以转义一下。
找到原因了,下面的一行代码导致的:
Label38.Text = vbNullChar
Label的类型是: GrapeCity.ActiveReports.SectionReportModel.Label,你们也可以试试 ANET 发表于 2024-2-28 13:41
找到原因了,下面的一行代码导致的:
Label38.Text = vbNullChar
Label的类型是: GrapeCity.ActiveRepor ...
Label38.Text = vbNullChar 是给Label38赋值为空字符串,字符串应该是"",这应该属于特殊字符,所以会出这种问题。
还有类似空的控制字符,比如 Chr(1), Chr(2)...... Chr(8) 这种字符都不行。 ANET 发表于 2024-4-17 10:25
还有类似空的控制字符,比如 Chr(1), Chr(2)...... Chr(8) 这种字符都不行。
您看一下上面的回复,xml底层对特殊字符都是不支持的。所以会是这种情况,您换成xls文件试试呢。
页:
[1]