コード例 #1
0
        // Write
        internal static void SaveWorkbookData(WorkbookData workbookData)
        {
            // Use DOM instead of XmlWriter when writing to workbook part and re-creating the workbook part causes problems
            // This means that the workbook xml file is saved with x: prefixed nodes and the file is loaded into memory, but it's not much of an issue on this small file.
            OpenXmlSpreadsheet.Workbook workbookElement = workbookData.Workbook.Document.WorkbookPart.Workbook;

            ((OpenXmlSpreadsheet.WorkbookView)workbookElement.BookViews.FirstChild).ActiveTab = new OpenXml.UInt32Value((UInt32)workbookData.ActiveTab);
            WorksheetCollection.AddWorksheetsToWorkbookElement(workbookElement, workbookData.Worksheets);
            if (workbookData.DefinedNames != null)
                DefinedNameCollection.AddDefinedNamesToWorkbookElement(workbookElement, workbookData.DefinedNames);

            workbookElement.Save();
        }
コード例 #2
0
        /***********************************
         * DAL METHODS
         ************************************/
        // Read
        private static void ReadWorkbookDataFromWorkbookData(WorkbookData workbookData)
        {
            OpenXmlSpreadsheet.Workbook workbookElement = workbookData.Workbook.Document.WorkbookPart.Workbook;

            using (CustomOpenXmlReader reader = CustomOpenXmlReader.Create(workbookElement))
            {
                while (reader.Read())
                {
                    if (reader.IsStartElementOfType<OpenXmlSpreadsheet.WorkbookView>())
                    {
                        CustomOpenXmlAttribute attribute = reader.Attributes["activeTab"];
                        if (attribute != null)
                            workbookData.ActiveTab = attribute.GetIntValue();
                    }
                    else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Sheets>())
                        workbookData.Worksheets = WorksheetCollection.ReadWorksheetsFromReader(reader, workbookData.Workbook);
                    else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.DefinedNames>())
                        workbookData.DefinedNames = DefinedNameCollection.ReadDefinedNamesFromReader(reader, workbookData.Workbook);
                }
            }
        }