2010-10-04 3 views
0

Я использую приложение Windows, в этом приложении Windows я экспортировал сетку, чтобы успешно преуспеть. теперь я хочу рассчитать сумму ячеек в листе excel в конкретной ячейке ... Я попробовал, но это исключение ... может кто-нибудь сказать мне, что я сделал не так? Как решить эту проблему? или сказать мне любое другое решение для этого ..Вычислить сумму ячеек в Excel с помощью C#

Заранее спасибо ...

Мой код:

wksheet.get_Range (Type.Missing, strSumOfTargetCell + RowCount) .Formula = «= СУММА ("+ strRowValue +": "+ strColumnRangeValue +") ";

+0

Какое исключение? – bla

+0

Если вы успешно экспортировали свой gridView, чтобы преуспеть, зачем все еще пытаться читать из excel вместо чтения из gridview? –

ответ

1

Во-первых, прочтите мой комментарий. Во-вторых, если вы все еще вычисляете ячейки от excel, на мой взгляд, вам нужно написать код, который читает файл .xlsx и вычисляет некоторые значения. Вот пример кода может читать excel doc и привязывается к DataTable.

Ваш код будет таким. после чтения целых клеток excel вы получили все значения клеток. (При создании объекта [] строки = новый obejct [])

using (OpenFileDialog openFileFromDialog = new OpenFileDialog()) 
     { 
      openFileFromDialog.Filter = "Excel Document|*.xls"; 
      openFileFromDialog.Title = "Select FIle"; 
      openFileFromDialog.ShowDialog(); 
      if (String.IsNullOrEmpty(openFileFromDialog.FileName)) 
       return; 

      using (OleDbConnection connection = new OleDbConnection { ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; 
         Data Source={0};Extended Properties=Excel 12.0;", openFileFromDialog.FileName) }) 
      { 
        using (DbCommand command = connection.CreateCommand()) 
        { 
         command.CommandText = String.Format("SELECT * FROM [{0}]", sheetName); 
         if (connection.State == ConnectionState.Closed) 
         { 
          connection.Open(); 
         } 
         using (DbDataReader dr = command.ExecuteReader()) 
         { 

          while (dr.Read()) 
          { 

           object[] row = new object[] 
             { 
             dr[1], 
             dr[2], 
             dr[3] 
             }; 
           YOURDATATABLE.Rows.Add(row); 
           } 
         } 
        } 
        } 
      } 

в части yourdatatable.Rows.Add(), можно выполнять вычисления вместо того, чтобы новый DataTable, такие как.

decimal Sum = 0; 
while(dr.Read()) 
{ 
Sum += (ConvertToDecimal(dr[1]) + ConvertToDecimal(dr[2])) * ConvertToDecimal(dr[3]) 
} 
Смежные вопросы