Ejemplo n.º 1
0
        private void MakeCells(XmlElement row, ref ArrayList resultRow, int lastRowIndex)
        {
            int lastColSeen = 0;

            foreach (XmlElement cell in XLSX.GetChildElements(row, "Cell"))
            {
                string colIndex = cell.GetAttribute("n");
                int    n        = 0;

                if (colIndex.Length > 0 && ((n = Int32.Parse(colIndex)) > 0))
                {
                    lastColSeen = n;
                }
                else
                {
                    lastColSeen++;
                }

                if (lastColSeen > 16384)
                {
                    throw new System.Exception("Cannot make more than 16384 columns; This is an Excel limitation");
                }

                while (resultRow.Count <= lastColSeen)
                {
                    resultRow.Add(null);
                }
                if (resultRow[lastColSeen] == null)
                {
                    resultRow[lastColSeen] = cell;
                }
            }
        }
Ejemplo n.º 2
0
        private void MakeWorksheets(ref Hashtable resultWorksheets)
        {
            XmlElement workbook = XLSX.GetChildElement(document, "Workbook");

            int sheetNo = 0;

            foreach (XmlElement worksheet in XLSX.GetChildElements(workbook, "Worksheet"))
            {
                string sheetName = worksheet.GetAttribute("Name");
                if (sheetName.Length == 0)
                {
                    throw new System.Exception("Cannot create a worksheet without a name");
                }

                int lastRowSeen = 0;

                ResultWorksheet resultWorksheet = null;
                if (resultWorksheets.Contains(sheetName))
                {
                    resultWorksheet = (ResultWorksheet)resultWorksheets[sheetName];
                }
                else
                {
                    resultWorksheet = new ResultWorksheet(sheetName, new ArrayList());
                }

                foreach (XmlElement row in XLSX.GetChildElements(worksheet, "Row"))
                {
                    string rowIndex = row.GetAttribute("r");
                    int    n        = 0;

                    if (rowIndex.Length > 0 && ((n = Int32.Parse(rowIndex)) > 0))
                    {
                        lastRowSeen = n;
                    }
                    else
                    {
                        rowIndex = Convert.ToString(++lastRowSeen);
                    }

                    while (resultWorksheet.Matrix.Count <= lastRowSeen)
                    {
                        resultWorksheet.Matrix.Add(null);
                    }

                    ArrayList lastRow = (ArrayList)resultWorksheet.Matrix[lastRowSeen];
                    if (lastRow == null)
                    {
                        lastRow = new ArrayList();
                    }

                    MakeCells(row, ref lastRow, lastRowSeen);
                    resultWorksheet.Matrix[lastRowSeen] = lastRow;
                }
                resultWorksheet.Filename    = "worksheets/Sheet" + Convert.ToString(sheetNo) + ".xml";
                resultWorksheet.SheetId     = "rId" + Convert.ToString(sheetNo++);
                resultWorksheets[sheetName] = resultWorksheet;
            }
        }