2013-03-23 7 views
0

Вопрос 1: Данные для экспорта в Excel подготовлены с использованием двумерного объекта массива в моем коде vb.net. При попытке назначить этот объект массива свойствам ExcelRange.Value или .Value2 он отлично работает, за исключением случаев, когда длина текста любого экспортируемого значения ячейки превышает 8203 (она выдает исключение из msg «Исключение из HRESULT: 0x800A03EC»)Экспорт данных в excel

Вопрос 2: Принимая во внимание, что с использованием свойства excelrange.FormulaArray возникает ошибка с сообщением «Невозможно установить свойство FormulaArray класса Range». Но он отлично работает в 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/Решение этой проблемы было бы значительно оценен

ответ

0
  1. В соответствии с Excel 2010 Performance: Performance and Limit Improvements пределом для формула ячейки - 8000 символов. Однако дальнейшее тестирование показывает, что в Excel 2007 принята строка из 32767 символов (у меня нет копии 2010 года).

  2. Если вы переносите из таблицы, как правило, вы будете использовать .Value или .Formula, FormulaArray для частного случая, когда одна формула применяется к диапазону ячеек.

В представленном тестовом примере вы пытались назначить массив VB для Range.Value. Изменение этого параметра, чтобы назначить один элемент массива.

+0

Я создал простой код в макросе excel, который демонстрирует ошибку, которую я получаю. Загрузите файл здесь [link] (http://incometaxsoft.com/pdf/test1.xlsm) Здесь у меня есть wriiten simple excel macro с значениями обновления ячейки A10 от A1. Так как A1 содержит текст длины (более 8000 символов), поэтому его не обновлять в A10 –

+0

В макросе я написал два case.one для случая с ошибкой, а другой для обычного case.you может прокомментировать строку и увидеть ошибку. –

Смежные вопросы