2016-09-05 4 views
-1

Ich habe ein Problem beim Erstellen dynamischer Objekte für Schnittstellenvariablen.Dynamisches Objekt für Schnittstellenvariable C#

Unten ist für die eine Arbeitsmappe, Arbeitsblatt und Zellen. Also kann ich so erstellen

// ExcelFileBo enthält die Excel-Arbeitsmappen Positionen und Sheetnamen.

List<ExcelFileBo> excelFileBo ; 
    IWorkbook wbi1 = workbookSet.Workbooks.Open(exFileBo.WBLocation); 
    SpreadsheetGear.IWorksheet ws1 = wbi1.Worksheets[exFileBo.WBSheetName]; 
    SpreadsheetGear.IRange wc1 = ws1.Cells; 

Aber wie erstellt man Objekte für mehrere Arbeitsmappen, Arbeitsblätter und Zellen dynamisch?

foreach (ExcelFileBo exFileBo in excelFileBo) 
      { 
       if (System.IO.File.Exists(exFileBo.WBLocation)) 
       { 
        // how to create IWorkbook objects,IWorksheet object and IRange dynamically for all excel workbooks. 
       }     
      } 

Bitte helfen Sie mir, dies zu tun?

+2

Nun, es klingt wie Sie eine Sammlung verwenden möchten ... Ich sehe nicht, wo „dynamische Objekte“ kommen hier in. Könnten Sie bitte Ihre Frage klären? –

Antwort

0

Eigentlich ist Ihr erster Schritt, aus der Datenbank alle erforderlichen Informationen zu lesen. Dann erstellen Sie einfach die iRange unter Verwendung von Zellen

Ich würde schreiben Sie es wie diese

string workSheetSQL = "Select * From [WorkSheetTable]"; 
using (SqlConnection cnn = new SqlConnection("connection string here")) 
{ 
using (SqlCommand sheetCommand = new SqlCommand(workSheetSQL, cnn)) 
{ 
    using (SqlDataReader sheetReader = sheetCommand.ExecuteReader()) 
    { 
     while (sheetReader.Read()) 
     { 
      SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(); 
      SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets["Sheet1"]; 
      SpreadsheetGear.IRange cells = worksheet.Cells; 

      // Set the worksheet name. 
      worksheet.Name = sheetReader["WBSheetName"].ToString(); 
      //I assume FunctionWBId value is foreign key for cell Table, otherwise remove WHERE clause from following sql query 
      string cellsSQL = "Select * From [CellsTable] where FunctionWBId = "+sheetReader["FunctionWBId"].ToString(); 
      // Load cell values. 

      using (SqlCommand cellCommand = new SqlCommand(cellsSQL, cnn)) 
      { 
       using (SqlDataReader cellReader = cellCommand.ExecuteReader()) 
       { 
        while (cellReader.Read()) 
        { 
         cells[cellReader["ExcelCellNo"]ToString()].Value = cellReader["IOValue"].ToString(); 
         //Add more properties to each cell if you wish in the same way 
        } 
       }     
      } 
      workbook.SaveAs(sheetReader["WBLocation"].ToString()); 
      //Add more properties to workbook if you wish in the same way 
     } 
    } 
} 
} 
Verwandte Themen