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?
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