【问题标题】:Exporting huge xml to excel using Openxml使用 Openxml 将巨大的 xml 导出到 excel
【发布时间】:2012-07-25 09:05:17
【问题描述】:

我尝试使用 openxml sdk 2.0 将转换后的大 xml 数据写入 excel ..它给了我一个很大的例外。我认为 Open xml 不支持将批量数据写入 excel..我能够写入 50000行。这是我的代码::

 public void AddPartXml(OpenXmlPart part, string xml)
     { 
        using (Stream stream = part.GetStream())
        {
          byte[] buffer = (new UTF8Encoding()).GetBytes(xml);
          stream.Write(buffer, 0,buffer.Length);
          stream.Dispose();
        } 
    } 

有没有可能我们可以将数据写入块中而不是一次性写入。

【问题讨论】:

  • 请格式化您的代码,以便于阅读。
  • 你遇到的“大例外”是什么?
  • 请注意,所有版本的 excel 都有它们可以显示的最大行数。通常,这是 65535 (Int16)。 Excel 将忽略任何进一步的记录。此限制是按工作表而不是按工作簿,因此您可以根据需要分解数据
  • @basic 我正在使用 ms excel2010,它根据信息支持大约 10,48,576 行.. 基本问题是一旦创建工作表并将行批量附加到工作表..如何将下一批行附加到该表...正如您所知,openxml 需要特定格式..如果您想要我传递给 excel 的 xml 格式,将提供给您...
  • 非常正确 re:2010。不幸的是,我不知道你的问题的答案

标签: c# xml stream openxml export-to-excel


【解决方案1】:

有没有可能我们可以将数据写入到块中 而不是一口气写完。

不可以,但您可以将 OpenXML 库与 XmlTextWriter 结合使用来解决此类问题。

查看我的免费 C#“导出到 Excel”库中的源代码。

http://www.mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

我在尝试构建我想在内存中写入的整个 Excel .xlsx 文件的“图像”时遇到了同样的问题。最终,您的应用程序将耗尽内存并崩溃。

【讨论】:

  • 链接已损坏。
【解决方案2】:

如果字符串很长,可以使用

public override int GetBytes(
string s,
int charIndex,
int charCount,
byte[] bytes,
int byteIndex
)

逐段转换,甚至重用字节数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多