【问题标题】:Exporting data to an excel将数据导出到 Excel
【发布时间】:2013-03-23 10:11:40
【问题描述】:

问题 1:要导出到 Excel 的数据是在我的 vb.net 代码中使用二维数组对象准备的。当尝试将此数组对象分配给 ExcelRange.Value 或 .Value2 属性时,它可以正常工作,除非要导出的任何单元格值的文本长度超过 8203(它会引发异常,并带有消息“HRESULT 异常:0x800A03EC”)

问题 2:而使用 excelrange.FormulaArray 属性时,会出现错误消息“无法设置 Range 类的 FormulaArray 属性”。但它在使用字符串数组的 vb6 中工作正常。 是什么原因 ? 以下是我使用 excelrange.FormulaArray 属性时的详细错误

System.Runtime.InteropServices.COMException was caught
ErrorCode=-2146827284
HelpLink="C:\Program Files (x86)\Microsoft Office\Office12\1033\XLMAIN11.CHM"
Message="Unable to set the FormulaArray property of the Range class"
Source="Microsoft Office Excel"
StackTrace:
   at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
   at Excel.Range.set_FormulaArray(Object )
   at globalmodule.modglobconstant.ExportMsfgToExcel(AxMSFlexGrid& Msfg1, Boolean& flg, String FileName1)
InnerException:

任何其他导出到 excel 的替代方法/此问题的解决方案将不胜感激

【问题讨论】:

    标签: vb.net excel vb6 export-to-excel vba


    【解决方案1】:
    1. 根据Excel 2010 Performance: Performance and Limit Improvements,单元格公式的限制为 8000 个字符。然而,进一步的测试表明 Excel 2007 接受 32767 个字符的字符串(我手头没有 2010 的副本)。

    2. 如果您从表格中转移,通常您会使用.Value.FormulaFormulaArray 用于将一个公式应用于一系列单元格的特殊情况。

    在提交的测试用例中,您尝试将 VB 数组分配给 Range.Value。将其更改为分配数组的单个成员有效。

    【讨论】:

    • 我在 excel 宏中创建了一个简单的代码,它演示了我遇到的错误。在此处下载文件link 在这里我编写了简单的 excel 宏,其中 A10 单元格从 A1 更新值。由于 A1 包含一个长度文本(超过 8000 个字符),因此它不会在 A10 中更新
    • 在宏中我写了两种情况。一种用于错误情况,另一种用于正常情况。您可以评论该行并查看错误。
    猜你喜欢
    • 2013-09-11
    • 2016-06-30
    • 2017-03-27
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多