Hinzufügen von Daten zu vorhandenen excel-Verwendung von open xml sdk 2.5

Habe ich versucht zu Lesen, die vorhandene excel-Datei und kopiert Sie in einen anderen Pfad, und dann habe ich versucht Daten einfügen, um die Datei, die ich geklont. Aber ich kann' Daten einfügen. Ich weiß nicht, wo ich Fehler gemacht. Aber Hier habe ich meinen code.

Fehler aufgetreten in der Zeile sheetData.InsertAt<Row>(row,++rowIndex);. Bitte helfen Sie mir.

Package spreadsheetPackage = Package.Open(destinationFile, FileMode.Open, FileAccess.ReadWrite);

                using (var document = SpreadsheetDocument.Open(spreadsheetPackage))
                {
                    foreach (System.Data.DataTable table in ds.Tables)
                    {

var workbookPart = document.WorkbookPart;
                            var workbook = workbookPart.Workbook;

                            var sheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault();
                            Worksheet ws = ((WorksheetPart)(workbookPart.GetPartById(sheet.Id))).Worksheet;


                            SheetData sheetData = ws.GetFirstChild<SheetData>();


                            //Sheet sheet = sheets.FirstOrDefault();

                            if(sheet==null)
                                throw new Exception("No sheed found in the template file. Please add the sheet");

                            int rowIndex = 10, colIndex = 0;
                            bool flag = false;

                            var worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id);
                            var sharedStringPart = workbookPart.SharedStringTablePart;
                            var values = sharedStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
                            var rows = worksheetPart.Worksheet.Descendants<Row>();

                            List<String> columns = new List<string>();
                            foreach (System.Data.DataColumn column in table.Columns)
                            {
                                columns.Add(column.ColumnName);
                            }

                            foreach (System.Data.DataRow dsrow in table.Rows)
                            {
                                Row row = new Row();
                                foreach (String col in columns)
                                {
                                    DocumentFormat.OpenXml.Spreadsheet.Cell cell = new Cell();
                                    cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String;
                                    cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(dsrow[col].ToString());
                                    row.AppendChild<Cell>(cell);
                                }

                                sheetData.InsertAt<Row>(row,++rowIndex);
                            }

}
InformationsquelleAutor | 2013-11-27
Schreibe einen Kommentar