2017-09-27 32 views
-1

私はSQlから複数のストアドプロシージャを実行するコードを持っています。ただし、ストアドプロシージャからExcelファイルにデータを書き込む方法に問題があります。データをExcelファイルに書き込んだ後、Excelワークブックを保存します。どうすればこれを達成できますか?どんな助力も非常に感謝しています。Excelファイルにデータを書き込んで保存するには? EPPlus C#

これは私がこれまで持っているものです。

public static void ExecuteStoredProcedures() 
    { 
      using (SqlConnection connection = new SqlConnection("Data Source=the connection goes here..")) 
      { 
       SqlTransaction transaction; 

       connection.Open(); 
       transaction = connection.BeginTransaction(); 

       try 
       { 
        SqlCommand cmdOne = new SqlCommand("exec ", connection); 
        SqlCommand cmdTwo = new SqlCommand("exec", connection); 
        SqlCommand cmdThree = new SqlCommand("exec", connection); 

        cmdOne.ExecuteNonQuery(); 
        cmdTwo.ExecuteNonQuery(); 
        cmdThree.ExecuteNonQuery(); 
        transaction.Commit();    
       } 

       catch (Exception ex) 
       { 
        transaction.Rollback(); 
        connection.Close(); 
       } 
      } 
     } 

     public static void SaveExcelFile() 
     { 

      string SheetLocation = ConfigurationManager.AppSettings["SheetLocation"]; 

      if (!System.IO.Directory.Exists(SheetLocation)) 
      { 
       System.IO.Directory.CreateDirectory(SheetLocation); 
      } 

      ExecuteStoredProcedures(); //Should I call the method to load the data that comes from the stored procedures? Or what should I do to write the data into the file? 

      var newFile = new FileInfo(@"C:\Users\"); 

      using (ExcelPackage xlPackage = new ExcelPackage(newFile)) 
      {       
       xlPackage.Save(); 
      }      
     } 
+1

あなたはドキュメントを見ていました全く?あなたは何も試していないようです。 – mason

+0

ドキュメントと例をお読みください。彼らはすでに何をすべきかを示しています。 EPPlusには、単一コールでExcelの範囲にデータをロードできるLoadCollection *および* LoadDataTableがあります。 –

答えて

0

は、DataSetまたはDataTableの形式のストアドプロシージャからデータを取得します。

ワークシートを作成:2D配列などのDataTableの行と列に

using (ExcelPackage xlPackage = new ExcelPackage(newFile)) 
{       
    ExcelWorksheet ws = xlPackage.Workbook.Worksheets.Add(AnyName); 

} 

ループを、ワークシートのセルを作成し、作成したセルにデータを追加します。

int rowIndex = 0 
foreach (DataRow DataTableRow in dt.Rows) 
{ 
    int colIndex = 1; 
    rowIndex++; 
    foreach (DataColumn DataTableColumn in dt.Columns) 
    { 
     var cell = ws.Cells[rowIndex, colIndex]; 
     cell.Value = DataTableRow[DataTableColumn.ColumnName]; 
     colIndex++; 
    } 
} 
+1

組み込みメソッドを使用してDataTableをロードするのはなぜですか? – mason

関連する問題