gpt4 book ai didi

c# - System.Text.StringBuilder.ToString() 处的 System.OutOfMemoryException 与 Excel XML 字符串

转载 作者:行者123 更新时间:2023-11-30 17:54:16 25 4
gpt4 key购买 nike

最近我一直在研究 C#/ASP.NET 中的代码,该代码在选择大参数时会引发错误:

Exception of type 'System.OutOfMemoryException' was thrown. at System.Text.StringBuilder.ToString()

总体概述:代码根据用户的选择从数据库中查询一堆数据,并将其放入 Excel 文档中,然后由用户导出/下载。它首先使用 StringBuilder 附加 XML 的前缀:

const string startExcelXML = "<xml version>\r\n<Workbook " +
"xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"\r\n" +
" xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\n " +
"xmlns:x=\"urn:schemas- microsoft-com:office:" +
"excel\"\r\n xmlns:ss=\"urn:schemas-microsoft-com:" +
"office:spreadsheet\">\r\n <Styles>\r\n " +
"<Style ss:ID=\"Default\" ss:Name=\"Normal\">\r\n " +
"<Alignment ss:Vertical=\"Bottom\"/>\r\n <Borders/>" +
"\r\n <Font/>\r\n <Interior/>\r\n <NumberFormat/>" +
"\r\n <Protection/>\r\n </Style>\r\n " +
"<Style ss:ID=\"BoldColumn\">\r\n <Font " +
"x:Family=\"Swiss\" ss:Bold=\"1\"/>\r\n </Style>\r\n " +
"<Style ss:ID=\"StringLiteral\">\r\n <NumberFormat" +
" ss:Format=\"@\"/>\r\n </Style>\r\n <Style " +
"ss:ID=\"Decimal\">\r\n <NumberFormat " +
"ss:Format=\"0.0000\"/>\r\n </Style>\r\n " +
"<Style ss:ID=\"Integer\">\r\n <NumberFormat " +
"ss:Format=\"0\"/>\r\n </Style>\r\n <Style " +
"ss:ID=\"DateLiteral\">\r\n <NumberFormat " +
"ss:Format=\"mm/dd/yyyy;@\"/>\r\n </Style>\r\n " +
"</Styles>\r\n ";

然后它通过一个循环,遍历并附加 </Data></Cell>在最后追加之前根据需要进行类似操作:

const string endExcelXML = "</Workbook>";

然后是return contentSB.ToString();由于这是异常引用的方法中唯一的 ToString(),因此它必须是这段代码。

类似的 StackOverflow 问题: interesting OutOfMemoryException with StringBuilder

想法:我已经尝试使用以下代码来大致了解字符串的大小,这适用于较小的选择,但不会输出任何内容用于较大的选择并且 contentSB 是 StringBuilder 对象:

    System.Diagnostics.Debug.WriteLine("String:", contentSB);
System.Diagnostics.Debug.WriteLine("String length:", contentSB.Length);

引用的其他 StackOverflow 问题发生在追加时,而我的是在返回 ToString() 时,因此问题的原因可能有所不同,因为它不是发生在循环中追加的中间,而是发生在转换过程中/返回。根本原因是什么,我该如何解决?

最佳答案

关于c# - System.Text.StringBuilder.ToString() 处的 System.OutOfMemoryException 与 Excel XML 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com