Quantcast
Channel: Open XML Format SDK forum
Viewing all articles
Browse latest Browse all 1288

Problem to write to Worksheet with InnerText

$
0
0
Hi,
I cannot properly write to Worksheet with values by codes below, while there're values to vCO, vRO, vSI, and vIT (vIT is having value to InnerText). Why?
                        using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(@Path0, true))
                        {
                            if (vIT != "")
                            {
                                index = InsertSharedStringItem(vIT, shareStringPart);
                            }
                            IEnumerable<Sheet> sheets = spreadSheet.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == vSN);
                            // if the specific sheet doesnot exist, create new
                            if (sheets.Count() == 0)
                            {
                                InsertWorksheetCus(spreadSheet.WorkbookPart, vSN);
                            }
                            // get the worksheetPart
                            WorksheetPart worksheetPart2 = (WorksheetPart)spreadSheet.WorkbookPart.GetPartById(sheets.First().Id);

                            string columnName;
                            uint rowIndex;
                            if (vCO != "" && vRO != "")
                            {
                                columnName = vCO + vRO;
                                rowIndex = Convert.ToUInt32(vRO);
                                Cell cell = InsertCellInWorksheet(columnName, rowIndex, worksheetPart2);
                                if (vSI != "")
                                    cell.StyleIndex = Convert.ToUInt32(vSI);

                                if (index != 0)
                                {
                                    cell.CellValue = new CellValue(index.ToString());
                                    cell.DataType = new EnumValue<CellValues>(CellValues.SharedString);
                                }

                                worksheetPart2.Worksheet.Save();
                            }
                            ...

        private static Cell InsertCellInWorksheet(string columnName, uint rowIndex, WorksheetPart worksheetPart)
        {
            DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet = worksheetPart.Worksheet;
            SheetData sheetData = worksheet.GetFirstChild<SheetData>();
            string cellReference = columnName + rowIndex;
            Row row;
            if (sheetData.Elements<Row>().Where(r => r.RowIndex == rowIndex).Count() != 0)
            {
                row = sheetData.Elements<Row>().Where(r => r.RowIndex == rowIndex).First();
            }
            else
            {
                row = new Row() { RowIndex = rowIndex };
                sheetData.Append(row);
            }
            if (row.Elements<Cell>().Where(c => c.CellReference.Value == columnName + rowIndex).Count() > 0)
            {
                return row.Elements<Cell>().Where(c => c.CellReference.Value == cellReference).First();
            }
            else
            {
                Cell refCell = null;
                foreach (Cell cell in row.Elements<Cell>())
                {
                    if (string.Compare(cell.CellReference.Value, cellReference, true) > 0)
                    {
                        refCell = cell;
                        break;
                    }
                }
                Cell newCell = new Cell() { CellReference = cellReference };
                row.InsertBefore(newCell, refCell);
                worksheet.Save();
                return newCell;
            }
        }



Many Thanks & Best Regards, Hua Min


Viewing all articles
Browse latest Browse all 1288

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>