2010-08-10 7 views
2

У меня есть порт excel file, который ребята используют для вычисления конечной цены на C#, поэтому я могу позже использовать этот алгоритм в приложении Asp.Net. Это то, что я буду делать не в первый раз, но сегодня это ударило меня. Может быть, Excel может экспортировать в C#. Меня не волнует, будет ли это выглядеть некрасиво, но это все равно для начала.Экспорт Excel в C#

Есть ли какой-нибудь плагин Excel, где я мог бы отметить некоторые ячейки ввода и вывода, и это добавит-он будет экспортировать его на C#?

Редактировать

Наш клиент имеет файл Excel, где Employés может изменить некоторые поля и увидеть окончательную цену на другом поле. Файл Excel не имеет VB, но использует стандартные функции математических функций для расчета цены.

Представьте файл excel, используемый для расчета цены страховки в реальном времени.

  • Excel файл имеет пустые ячейки компания работодатель должен заполнить: клиент возраст, вредные привычки, страхование цена, период страхования, скидки и так далее
  • Excel файл имеет множество ячеек с константами. Константы, скорее всего, коэффи- циенты (например, коэффи- циент цены на количество лет заключения контракта на страхование за год).
  • Файл Excel содержит много ячеек с промежуточными значениями
  • Файл Excel имеет одну выходную ячейку с окончательная страховая цена за весь период

Что мне нужно сделать, это выполнить вычисления портов, сделанные с помощью файла excel, на C#.

+1

Я думаю, что вы нужно дать нам немного более подробно. Вы хотите экспортировать данные в электронную таблицу Excel в формат, который можно использовать в приложении C#? –

+0

Я думаю, что OP хочет взять логику вычисления * в своей электронной таблице, в настоящее время реализованную с помощью формул, и произвести эквивалентную реализацию C#. – jtolle

ответ

3

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

Я использовал this write-up on C# Excel Interop Use в качестве отправной точки для чтения данных Excel из приложения, написанного на C#. Это может быть хорошим местом, чтобы начать выяснять, как сделать данные Excel видимыми на C#.

Другой способ интерпретировать ваш вопрос состоит в том, что вы хотите преобразовать код Visual Basic для приложений (VBA) в книгу Excel в C#. Если это так, то у вас есть несколько вариантов:

  • Если это не так много кода, это, вероятно, было бы проще просто преобразовать алгоритмы и процедуры по одному за раз из VBA в C#.
  • Это довольно уродливый способ, но вы можете импортировать код VBA в Visual Studio и преобразовывать его в VB.NET. Затем вы можете использовать reflector, чтобы отобразить код на C#. Конечно, это предполагает, что код VBA не тесно связан с отдельными объектами Excel (рабочие листы, строки, ячейки, диапазоны и т. Д.); если это что-то вроде «бизнес-приложений» Excel, которые я видел (и писал), это вряд ли будет иметь место.
  • Для абсолютно огромных приложений с развязанным кодом, вы можете рассмотреть решения для миграции VB6 в .NET, например VB Migration Partner. Я не уверен, насколько хорошо эти решения будут работать, если у вас плотно связанный код, но если книга огромна, то это может быть что-то посмотреть.
1

Вы не можете создать код из листа речи. Вы скорее хотите .NET API, который читает файлы excel. Из них несколько. Это один я использую: http://exceldatareader.codeplex.com/

2

Если вы имеете в виду:

  • У меня есть приложение Excel VBA, что я хочу портировать на C#

Тогда этот вопрос может быть какой-то помощи :

+1

Я не думал, что, возможно, OP хочет конвертировать VBA в C#. Хороший улов. –

1

Я никогда не использовал его, но вы можете посмотреть на это:

http://www.calc4web.com/

кажется, делать то, что вы хотите, только с C++ вместо C#, но дело в том, что вы получите некоторый код, который вы затем можете скомпилировать и использовать (или перевести, если вам действительно нужен C#).

В ответах на этот вопрос:

Understanding/Modeling formulas from Excel

Джо Эриксон дал ссылку на свой продукт, Spreadsheet Gear, но я никогда не использовал, что либо.

1

Если у вашей компании есть SharePoint 2007 или 2010, вы можете взглянуть на Excel Services, что позволяет использовать вычисления в книгах Excel через веб-часть SharePoint. Не уверены, что, если вы могли бы выставить этот веб-часть для других приложений ASP.NET или нет, но это может быть стоит исследовать

0

Попробуйте использовать этот код, это может поможет

public static void DataSetsToExcel(DataSet dataSet, string filepath) 
    { 
     try 
     { 
      string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=Excel 12.0 Xml;"; 
      string tablename = ""; 
      DataTable dt = new DataTable(); 
      foreach (System.Data.DataTable dataTable in dataSet.Tables) 
      { 
       dt = dataTable; 
       tablename = dataTable.TableName; 
       using (OleDbConnection con = new OleDbConnection(connString)) 
       { 
        con.Open(); 
        StringBuilder strSQL = new StringBuilder(); 
        strSQL.Append("CREATE TABLE ").Append("[" + tablename + "]"); 
        strSQL.Append("("); 
        for (int i = 0; i < dt.Columns.Count; i++) 
        { 
         strSQL.Append("[" + dt.Columns[i].ColumnName + "] text,"); 
        } 
        strSQL = strSQL.Remove(strSQL.Length - 1, 1); 
        strSQL.Append(")"); 

        OleDbCommand cmd = new OleDbCommand(strSQL.ToString(), con); 
        cmd.ExecuteNonQuery(); 

        for (int i = 0; i < dt.Rows.Count; i++) 
        { 
         strSQL.Clear(); 
         StringBuilder strfield = new StringBuilder(); 
         StringBuilder strvalue = new StringBuilder(); 
         for (int j = 0; j < dt.Columns.Count; j++) 
         { 
          strfield.Append("[" + dt.Columns[j].ColumnName + "]"); 
          strvalue.Append("'" + dt.Rows[i][j].ToString().Replace("'", "''") + "'"); 
          if (j != dt.Columns.Count - 1) 
          { 
           strfield.Append(","); 
           strvalue.Append(","); 
          } 
          else 
          { 
          } 
         } 
         if (strvalue.ToString().Contains("<br/>")) 
         { 
          strvalue = strvalue.Replace("<br/>", Environment.NewLine); 
         } 
         cmd.CommandText = strSQL.Append(" insert into [" + tablename + "](") 
          .Append(strfield.ToString()) 
          .Append(") values (").Append(strvalue).Append(")").ToString(); 
         cmd.ExecuteNonQuery(); 
        } 
        con.Close(); 
       } 
      } 
     } 
     catch (Exception ex) 
     {     
     } 
    } 
Смежные вопросы