2010-12-10 11 views
7

के पीछे कोड में वर्कशीटपार्ट में डेटा जोड़ें हैलो दोस्तों मैं निम्नलिखित कोड में 3 वर्कशीट्स के साथ एक एक्सेल फ़ाइल बना रहा हूं।एक्सेल

using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Create(path + @"\UrlReport.xlsx", SpreadsheetDocumentType.Workbook)) 
      { 
       // create the workbook 
       spreadSheet.AddWorkbookPart(); 
       spreadSheet.WorkbookPart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook(); 

       // CREATE FIRST SHEET 
       WorksheetPart newWorksheetPart1 = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); 

       newWorksheetPart1.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(); 

       // create sheet data 
       newWorksheetPart1.Worksheet.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.SheetData()); 

       // save worksheet 
       newWorksheetPart1.Worksheet.Save(); 

       // create the worksheet to workbook relation 
       spreadSheet.WorkbookPart.Workbook.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheets()); 
       spreadSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheet() 
       { 
        Id = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart1), 
        SheetId = 1, 
        Name = "Sheet1" 
       }); 

       //CREATE SECOND SHEET 
       WorksheetPart newWorksheetPart2 = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); 
       newWorksheetPart2.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(); 

       // create sheet data 
       newWorksheetPart2.Worksheet.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.SheetData()); 

       // save worksheet 
       newWorksheetPart2.Worksheet.Save(); 

       // create the worksheet to workbook relation 
       spreadSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheet() 
       { 
        Id = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart2), 
        SheetId = 2, 
        Name = "Sheet2" 

       }); 

       //CREATE THIRD SHEET 
       WorksheetPart newWorksheetPart3 = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); 
       newWorksheetPart3.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(); 

       // create sheet data 
       newWorksheetPart3.Worksheet.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.SheetData()); 

       // save worksheet 
       newWorksheetPart3.Worksheet.Save(); 

       // create the worksheet to workbook relation 
       spreadSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheet() 
       { 
        Id = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart3), 
        SheetId = 3, 
        Name = "Sheet3" 
       }); 

       spreadSheet.WorkbookPart.Workbook.Save(); 
      } 

मुझे यह जानने की ज़रूरत है कि मैं 3 डेटाशीट्स की कोशिकाओं को कैसे पॉप्युलेट कर सकता हूं। मुझे बस कुछ कोशिकाओं में तार जोड़ने की ज़रूरत है जो शायद कुछ डेटाटेबल या बहुआयामी सरणी में होने जा रहे हैं।

उत्तर

9
private static void InsertValuesInWorksheet(WorksheetPart worksheetPart, IEnumerable<string> values) 
{ 
    var worksheet = worksheetPart.Worksheet; 
    var sheetData = worksheet.GetFirstChild<SheetData>(); 
    var row = new Row { RowIndex = 1 }; // add a row at the top of spreadsheet 
    sheetData.Append(row); 

    int i = 0; 
    foreach (var value in values) 
    { 
     var cell = new Cell 
          { 
           CellValue = new CellValue(value), 
           DataType = new EnumValue<CellValues>(CellValues.String) 
          }; 

     row.InsertAt(cell, i); 
     i++; 
    } 
} 

इस विधि एक सरणी से मूल्यों के साथ एक निर्दिष्ट कार्यपत्रक में एक नई पंक्ति जोड़ना और पंक्ति की कोशिकाओं भर जाएगा। आपके कोड नमूने में, इसे इस तरह कहा जा सकता है:

var values = new[] {"foo", "bar", "baz"}; 

InsertValuesInWorksheet(newWorksheetPart1, values); 
InsertValuesInWorksheet(newWorksheetPart2, values); 
InsertValuesInWorksheet(newWorksheetPart3, values);