Exemplo n.º 1
0
        /// <summary>
        /// Erstellt einen neuen Workbook Cache.
        /// Es wird mindestens ein leerer WorkbookCache zurückgegeben.
        /// Die darin enthaltenen SheetCaches können von außerhalb nicht gefüllt werden.
        /// </summary>
        /// <param name="workbook"></param>
        /// <returns></returns>
        internal static WorkbookCache CreateWorkbookCache(Excel.Workbook workbook)
        {
            try
            {
                if (workbook != null)
                {
                    //Neuen WorkbookCache erzeugen
                    var wbCache = new WorkbookCache
                    {
                        //Name und SheetCache initialisieren
                        WorkbookName = workbook.Name,
                        SheetCaches  = new List <SheetCache>()
                    };

                    //Durch alle Sheets laufen und die SheetCaches erzeugen
                    foreach (Excel.Worksheet sheet in workbook.Sheets)
                    {
                        wbCache.SheetCaches.Add(SheetCache.CreateSheetCache(sheet));
                    }

                    return(wbCache);
                }
                return(null);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Fügt einen SheetCache dem Workbook hinzu
 /// </summary>
 /// <param name="sheetCache"></param>
 internal void AddSheetCache(SheetCache sheetCache)
 {
     if (SheetCaches == null)
     {
         SheetCaches = new List <SheetCache>();
     }
     if (sheetCache != null)
     {
         SheetCaches.Add(sheetCache);
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Versucht im Worksheet die Shapes mit den Barcodes zu finden. Dabei wird wenigstens ein Zellen
        /// Cache mit einer leeren Liste an Zellen Shapes erstellt. Wenn der Worksheet null ist, wird null
        /// zurückgegeben.
        /// </summary>
        /// <param name="worksheet"></param>
        /// <returns></returns>
        internal static SheetCache CreateSheetCache(Excel.Worksheet worksheet)
        {
            //Ist der Sheet vorhanden
            if (worksheet != null)
            {
                //Neuen Zellen Cache erstellen
                SheetCache cellCache = new SheetCache
                {
                    CellShapes    = new List <CellShape>(),
                    WorksheetName = worksheet.Name
                };

                //Durch alle Shapes im Worksheet laufen
                foreach (Excel.Shape shape in worksheet.Shapes)
                {
                    //Prüft den Shape auf Name, null usw.
                    if (CellShape.CheckShapeName(shape))
                    {
                        //Aktuelle Adresse
                        var addressCurShape = CellShape.GetAddress(shape);
                        //Aktueller Wert
                        var cellValue = worksheet.Range[addressCurShape]?.Value;
                        //Wert und Adresse auf null prüfen
                        if (addressCurShape != null && cellValue != null)
                        {
                            //Adresse, aktueller Wert und Shape im Cache ablegen
                            cellCache.CellShapes.Add(new CellShape {
                                Shape = shape, Address = addressCurShape, Value = cellValue
                            });
                        }
                    }
                }
                //Es wird mindestens ein instanziierter Zellen Cache mit einer leeren instanziierten Liste zurückgegeben.
                return(cellCache);
            }
            //Es gibt nichts
            return(null);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Fügt diesem WorkbookCache ein CellShape hinzu. Dieser wird als Barcode auf dem Worksheet angezeigt.
        /// Erzeugt also einen Barcode im <paramref name="workbook"/> und der <paramref name="range"/>
        /// und passt diesen an die Zelle an <paramref name="fitToCell"/>.
        /// </summary>
        /// <param name="workbook">In diesem Workbook soll der Barcode hinzugefügt werden.</param>
        /// <param name="range">Ein Bereich an Zellen. Die Zellen sollten Inhalte besitzen.</param>
        /// <param name="xlPlacement">Wie soll der Barcode an die Zelle gebunden sein.</param>
        /// <param name="fitToCell">Soll der Barcode an die Größe der Zelle angepasst werden.</param>
        /// <param name="cellFitToPicture">Soll die Zelle an die Größe des Bildes angepasst werden.</param>
        internal void AddCellShape(Excel.Workbook workbook, Excel.Range range, Excel.XlPlacement xlPlacement = Excel.XlPlacement.xlMove, bool fitToCell = false, bool cellFitToPicture = false)
        {
            try
            {
                if (workbook?.Name.Equals(WorkbookName) == true && range != null)
                {
                    //Existiert bereits ein SheetCache zu dem Worksheet
                    if (!HasSheetCache(range.Worksheet))
                    {
                        //Nein existiert nicht
                        //Neuen SheetCache hinzufügen
                        var shCch = SheetCache.CreateSheetCache(range.Worksheet);
                        if (shCch != null)
                        {
                            AddSheetCache(shCch);
                        }
                    }

                    //Den SheetCache ermitteln
                    var shCache = GetSheetCache(range.Worksheet);

                    if (shCache != null)
                    {
                        //Durch alle Zellen in der range laufen
                        foreach (Excel.Range cell in range)
                        {
                            //Jetzt den CellShape in den SheetCache schreiben, dabei wird er auch auf der Mappe erzeugt
                            shCache.AddCellShape(CellShape.AddShape(cell, xlPlacement, fitToCell, cellFitToPicture));
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// Setzt die Felder in der eigenen Instanz
 /// </summary>
 /// <param name="cellCache">der zu setzende CellCache</param>
 private void SetFelder(SheetCache cellCache)
 {
     CellShapes    = cellCache?.CellShapes;
     WorksheetName = cellCache?.WorksheetName;
 }