2016-03-29 5 views
0

Имея некоторые проблемы при анализе чисел из следующего листа расширения Excel.Excel Interlop Value vs Text vs Value2

Excel

Код:

var curQOH = toolkit.ExcelWorksheet.Cells[i, 28] as Range; 
         var curQAV = toolkit.ExcelWorksheet.Cells[i, 29] as Range; 
         if (!curQOH.Text.Contains("(")) 
          Int32.TryParse(curQOH.Text, out lastQOH); 
         else 
          Int32.TryParse(curQOH.Value as string, out lastQOH); 
         if (!curQAV.Text.Contains("(")) 
          Int32.TryParse(curQAV.Text, out lastQAV); 
         else 
          Int32.TryParse(curQAV.Value as string, out lastQAV); 

Код выше разбирает положительные числа просто отлично. Без вопросов. Но похоже, что он не может проанализировать отрицательное число.

Насколько я знаю, текст должен дать мне то, что видит зритель, поэтому я бы получил (10) как результат. Значение действительно дает правильное число, но я не могу разобрать, что после кастинга в строку. (Этот вопрос, почему я не могу хранить значение как строку или брось в целое, Excel cell value as string won't store as string)

+0

Я рекомендую использовать EPPlus библиотеку с открытым исходным кодом, а не Interop. Это гораздо приятнее в использовании. –

+0

Я всегда использовал 'Value2', который затем преобразую в' string' для синтаксического анализа. Но (если я правильно читаю ваш код), вы будете пытаться разобрать '@" (10) "' на 'int', который не удастся. –

+0

@StephenRoss Я проверяю, имеет ли он (символ, поэтому я делаю значение, которое должно дать -10, а затем я разбору на int. –

ответ

0

купирован с помощью Excel Interlop и начал использовать библиотеку OpenXML Excel