Exemple #1
0
        public ISheet CreateSheet(string sheetname)
        {
            if (sheetname == null)
            {
                throw new ArgumentException("sheetName must not be null");
            }
            if (this.ContainsSheet(sheetname, this.sheets.Count))
            {
                throw new ArgumentException("The workbook already contains a sheet of this name");
            }
            if (sheetname.Length > 31)
            {
                sheetname = sheetname.Substring(0, 31);
            }
            WorkbookUtil.ValidateSheetName(sheetname);
            CT_Sheet ctSheet = this.AddSheet(sheetname);
            int      idx     = 1;

            foreach (XSSFSheet sheet in this.sheets)
            {
                idx = (int)Math.Max((long)(sheet.sheet.sheetId + 1U), (long)idx);
            }
            XSSFSheet relationship = (XSSFSheet)this.CreateRelationship((POIXMLRelation)XSSFRelation.WORKSHEET, (POIXMLFactory)XSSFFactory.GetInstance(), idx);

            relationship.sheet = ctSheet;
            ctSheet.id         = relationship.GetPackageRelationship().Id;
            ctSheet.sheetId    = (uint)idx;
            if (this.sheets.Count == 0)
            {
                relationship.IsSelected = true;
            }
            this.sheets.Add(relationship);
            return((ISheet)relationship);
        }
Exemple #2
0
        private CT_Sheet AddSheet(string sheetname)
        {
            CT_Sheet ctSheet = this.workbook.sheets.AddNewSheet();

            ctSheet.name = sheetname;
            return(ctSheet);
        }
 public XMLHyperlinkModel(string area, string href, string text, PartManager manager, CT_Sheet entry)
 {
     _link               = new CT_Hyperlink();
     _link._ref_Attr     = area;
     _link.Location_Attr = href;
     _link.Display_Attr  = text;
     _isInternal         = !href.Contains("://");
     _manager            = manager;
     _worksheetEntry     = entry;
 }
 public XmlPart GetWorksheetXmlPart(CT_Sheet sheetentry)
 {
     foreach (Relationship workbookRelationship in GetWorkbookRelationships())
     {
         if (workbookRelationship.RelationshipId == sheetentry.Id_Attr)
         {
             return((XmlPart)_relationshipTree.GetPartByLocation(workbookRelationship.RelatedPart));
         }
     }
     throw new FatalException();
 }
Exemple #5
0
 public XMLPictureShapesModel(PartManager manager, CT_Sheet sheetEntry, string drawingId)
 {
     _manager  = manager;
     _parent   = _manager.GetWorksheetXmlPart(sheetEntry);
     _pictures = new List <XMLPictureShapeModel>();
     foreach (Relationship item in _manager.GetRelationshipsForSheet(sheetEntry, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"))
     {
         if (item.RelationshipId == drawingId)
         {
             _drawingrel = item;
             _drawing    = (WsDrPart)_manager.GetPartByLocation(item.RelatedPart).HydratedPart;
             _           = (Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.Parser.drawingml.x2006.spreadsheetDrawing.CT_Drawing)_drawing.Root;
             break;
         }
     }
 }
Exemple #6
0
        public void SetSheetOrder(string sheetname, int pos)
        {
            int       sheetIndex = this.GetSheetIndex(sheetname);
            XSSFSheet sheet1     = this.sheets[sheetIndex];

            this.sheets.RemoveAt(sheetIndex);
            this.sheets.Insert(pos, sheet1);
            CT_Sheets sheets = this.workbook.sheets;
            CT_Sheet  sheet2 = sheets.GetSheetArray(sheetIndex).Copy();

            this.workbook.sheets.RemoveSheet(sheetIndex);
            sheets.InsertNewSheet(pos).Set(sheet2);
            for (int index = 0; index < this.sheets.Count; ++index)
            {
                this.sheets[index].sheet = sheets.GetSheetArray(index);
            }
        }
        public List <Relationship> GetRelationshipsForSheet(CT_Sheet sheetEntry, string relationshipType)
        {
            List <Relationship> list = new List <Relationship>();

            foreach (Relationship workbookRelationship in GetWorkbookRelationships())
            {
                if (!(workbookRelationship.RelationshipId == sheetEntry.Id_Attr))
                {
                    continue;
                }
                foreach (Relationship item in _relationshipTree.GetRelationshipsByPath(workbookRelationship.RelatedPart))
                {
                    if (item.RelationshipType == relationshipType)
                    {
                        list.Add(item);
                    }
                }
            }
            return(list);
        }
Exemple #8
0
        public XMLStreamsheetModel(XMLWorkbookModel workbook, XMLWorksheetsModel sheets, PartManager manager, string name, ExcelGeneratorConstants.CreateTempStream createTempStream)
        {
            _workbookModel   = workbook;
            _worksheetsModel = sheets;
            _manager         = manager;
            _interface       = new Streamsheet(this);
            Relationship    relationship = _manager.AddStreamingPartToTree("application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", "xl/worksheets/sheet{0}.xml", (XmlPart)_manager.GetPartByContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"));
            List <CT_Sheet> sheet        = ((CT_Workbook)_manager.Workbook.Root).Sheets.Sheet;

            _sheetentry              = new CT_Sheet();
            _sheetentry.Id_Attr      = relationship.RelationshipId;
            _sheetentry.Name_Attr    = name;
            _sheetentry.SheetId_Attr = sheets.NextId;
            sheet.Add(_sheetentry);
            _partName   = relationship.RelatedPart;
            _headStream = createTempStream(string.Format(CultureInfo.InvariantCulture, "streamsheetHead{0}", _sheetentry.SheetId_Attr));
            _tailStream = createTempStream(string.Format(CultureInfo.InvariantCulture, "streamsheetTail{0}", _sheetentry.SheetId_Attr));
            _headWriter = new StreamsheetParser(new StreamWriter(_headStream), startAtPrelude: true);
            _tailWriter = new StreamsheetParser(new StreamWriter(_tailStream), startAtPrelude: false);
            _headWriter.WritePrelude();
        }
Exemple #9
0
        public void SerializeWorksheetDocumentTest()
        {
            CT_Workbook worksheet = new CT_Workbook();
            CT_Sheet    sheet1    = new CT_Sheet();

            sheet1.name    = "Sheet1";
            sheet1.sheetId = 1u;
            sheet1.id      = "rId1";
            worksheet.sheets.sheet.Add(sheet1);

            var bks = worksheet.AddNewBookViews();
            var bk  = bks.AddNewWorkbookView();

            bk.xWindow               = 360;
            bk.xWindowSpecified      = true;
            bk.yWindow               = 60;
            bk.yWindowSpecified      = true;
            bk.windowWidth           = 11295;
            bk.windowWidthSpecified  = true;
            bk.windowHeight          = 5580;
            bk.windowHeightSpecified = true;



            StringWriter stream = new StringWriter();

            WorkbookDocument_Accessor.serializer.Serialize(stream, worksheet, WorkbookDocument_Accessor.namespaces);
            string expected = @"<?xml version=""1.0"" encoding=""utf-16""?>
<workbook xmlns:r=""http://schemas.openxmlformats.org/officeDocument/2006/relationships"" xmlns=""http://schemas.openxmlformats.org/spreadsheetml/2006/main"">
  <bookViews>
    <workbookView xWindow=""360"" yWindow=""60"" windowWidth=""11295"" windowHeight=""5580"" />
  </bookViews>
  <sheets>
    <sheet name=""Sheet1"" sheetId=""1"" r:id=""rId1"" />
  </sheets>
</workbook>";

            Assert.AreEqual(expected, stream.ToString());
        }
Exemple #10
0
        void WriteWorkbook()
        {
            rels.Add(new CT_Relationship {
                Type = Relationships.Workbook, Target = "xl/workbook.xml"
            });
            OverrideContentType("/xl/workbook.xml", ContentTypes.Workbook);

            sharedStrings = new SharedStrings();
            ClearStyles();

            workbookRelationships = new Relationships();

            int sheetIndex = 1;

            contentTypes.Add(new CT_Default {
                Extension = "xml", ContentType = ContentTypes.Xml
            });
            contentTypes.Add(new CT_Default {
                Extension = "rels", ContentType = ContentTypes.Rels
            });

            var sheets = new List <CT_Sheet>();

            foreach (var sheet in workbook.Sheets)
            {
                var relativePath = String.Format("worksheets/sheet{0}.xml", sheetIndex);
                var sheetPath    = "xl/" + relativePath;
                var rid          = workbookRelationships.Add(new CT_Relationship
                {
                    Target     = relativePath,
                    TargetMode = ST_TargetMode.Internal,
                    Type       = Relationships.Sheet
                });
                OverrideContentType(sheetPath, ContentTypes.Sheet);
                var st = new CT_Sheet
                {
                    id      = rid,
                    name    = sheet.SheetName,
                    sheetId = (uint)sheetIndex
                };
                sheets.Add(st);
                WriteSheet(sheetPath, sheet);
                sheetIndex++;
            }

            var wb = new CT_Workbook()
            {
                sheets    = sheets.ToArray(),
                bookViews = new[] { new CT_BookView() }
            };

            var definedNames = new List <CT_DefinedName>();

            foreach (var definedName in workbook.DefinedNames)
            {
                var dn = new CT_DefinedName
                {
                    name  = definedName.Name,
                    Value = definedName.Value
                };
                definedNames.Add(dn);
            }

            for (var i = 0; i < workbook.Sheets.Count; i++)
            {
                foreach (var definedName in workbook.DefinedNames)
                {
                    var dn = new CT_DefinedName
                    {
                        name                  = definedName.Name,
                        Value                 = definedName.Value,
                        localSheetId          = (uint)i,
                        localSheetIdSpecified = true
                    };
                    definedNames.Add(dn);
                }
            }

            if (definedNames.Count > 0)
            {
                wb.definedNames = definedNames.ToArray();
            }


            WriteFile("xl/workbook.xml", wb, SpreadsheetNs(true));

            if (sharedStrings.Count > 0)
            {
                WriteSharedStrings();
            }

            if (!styles.Empty)
            {
                OverrideContentType("xl/styles.xml", ContentTypes.Styles);
                workbookRelationships.Add(new CT_Relationship {
                    Target = "styles.xml", Type = Relationships.Styles
                });
                WriteStyles("xl/styles.xml");
            }

            WriteRelationsips("xl/_rels/workbook.xml.rels", workbookRelationships);
        }