2013-09-21 21 views
6

Abbiamo un requisito come esportare i dati in foglio Excel in formato Xml come creare un nuovo SpreadSheet XML Ho seguito questo collegamento per creare excel xml Spreadsheet. In questo link si è accennato campionepassi per creare excel foglio di calcolo XML usando C#

< ?xml version="1.0"?> 
< ?mso-application progid="Excel.Sheet"?> 
<workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:html="http://www.w3.org/TR/REC-html40"> 
<documentproperties xmlns="urn:schemas-microsoft-com:office:office"> 
<author>Author</author> 
<lastauthor>LastAuthor</lastauthor> 
<created>11-09-2007</created> 
<version>12.00</version> 
</documentproperties> 
<excelworkbook xmlns="urn:schemas-microsoft-com:office:excel"> 
<protectstructure>False</protectstructure> 
<protectwindows>False</protectwindows> 
</excelworkbook> 
</workbook> 

in cui ho bisogno di definire questo formato in C# progetto, nel codice di cui sopra ho bisogno di ottenere le informazioni su autore e ultimo autore hanno bisogno di impegnare dal database ....

in quel collegamento non ha menzionato completamente per la creazione di documenti ...

Se voglio creare un ExcelXml spread sheet quali sono i passi che ho bisogno di seguire, ho bisogno di creare un formato predefinito che verrà memorizzato nel progetto ...

siamo in grado di accedere allo sdk XML aperto, ma non trovo alcuna soluzione di esempio per creare il formato xml all'interno del foglio di calcolo Excel, è possibile fare la stessa cosa con open XML SDK, e se fosse possibile, mi avresti indirizzato nella giusta direzione. ..

farebbe uno ha tutte le idee e le eventuali soluzioni che sarebbe molto grato a me ....

Molte grazie in anticipo

+1

Si potrebbe avere un foglio di calcolo modello e basta copiarlo, se un modello sarebbe naturalmente l'ideale. –

+0

La maggior parte delle volte creiamo solo un foglio di supporto di base e lo cambiamo con XSLT. –

+0

Consiglio vivamente di utilizzare qualcosa come ClosedXML. Cercare di utilizzare l'API OpenXML è terribile. – aquinas

risposta

0

in mancanza di un modello di provare il seguente tratto da here

using System.IO; 
using DocumentFormat.OpenXml; 
using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Spreadsheet; 

public static void CreateSpreadsheetWorkbook(string filepath) 
    { 
     // Create a spreadsheet document by supplying the filepath. 
     // By default, AutoSave = true, Editable = true, and Type = xlsx. 

     SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook); 

     // Add a WorkbookPart to the document. 
     WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); 
     workbookpart.Workbook = new Workbook(); 

     // Add a WorksheetPart to the WorkbookPart. 
     WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>(); 
     worksheetPart.Worksheet = new Worksheet(new SheetData()); 

     // Add Sheets to the Workbook. 
     Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets()); 

     // Append a new worksheet and associate it with the workbook. 
     Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" }; 
     sheets.Append(sheet); 

     workbookpart.Workbook.Save(); 

     // Close the document. 
     spreadsheetDocument.Close(); 
    } 

// Called using 
CreateSpreadsheetWorkbook("C:\\Test\\Test.xlsx"); 

EDIT: Si potrebbe convertire l'XML per eccellere utilizzando il seguente codice:

Workbook workbook = new Workbook(); 
workbook.LoadFromFile(@"../../Data/test.xml"); 
workbook.SaveToFile(@"..\..\result.xlsx", ExcelVersion.Version2010); 

Se si desidera creare in realtà un documento di Office XML, io sono sicuro di come automatizzare questo processo da un file XML. Date un'occhiata a this for some pointers

+0

crea i dati del formato xml all'interno del foglio excel –

+0

grazie per quello, un dubbio è come dove ho bisogno di mettere tutti questi è nel file di classe C# o è nel file xml ... ' ' –

+0

per l'esportazione, devo prima creare il formato xml e poi esportarlo in foglio Excel ... è così corretto ... –

0

È possibile utilizzare OpenXml SDK per questa attività.

L'utilizzo di OpenXml SDK direttamente non è facile, per un'applicazione semplice è meglio utilizzare un wrapper.

Dare un'occhiata al progetto JumboExcel (divulgazione: sono l'autore).

Creazione di un foglio di calcolo è facile come segue:

var tempFileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".xlsx"); 
using (var file = new FileStream(tempFileName, FileMode.CreateNew)) 
{ 
    OpenXmlBuilder.Write(
     file, 
     new[] { 
      new Worksheet(
       "Parameters", 
       null, 
       new Row(new InlineString("Name"), new InlineString("Value")), 
       new Row(new InlineString("Height"), new DecimalCell(123m)) 
      ) 
     } 
    ); 
} 
Process.Start(tempFileName); 

Inoltre, è possibile esplorare le fonti di vedere i sorgenti da Github page e dare un'occhiata a DemoTests per ulteriori esempi.