我有一个.xlsx文件,该文件已经有一些数据。我想在I1单元上输入一些数据。
更新:我试过了:
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
Row row1 = new Row()
{
RowIndex = (UInt32Value)1U
};
Cell cell = new Cell() { CellReference = "I1" };
CellFormula cellformula = new CellFormula();
cellformula.Text = "IF(A2 = A1,1,0)";
CellValue cellValue = new CellValue();
cellValue.Text = "0";
cell.Append(cellformula);
cell.Append(cellValue);
row1.Append(cell);
sheetData.Append(row1);
但这是行不通的。
请提供示例代码和答案。
Row
即使您的文档中已经存在一个对象,您仍在创建一个新对象。然后给它一个RowIndex
也已经存在的文件,这意味着您将得到一个损坏的文件(不能有两个具有相同索引的行)。
您需要找到现有的 Row
并将其添加Cell
到其中,而不是创建一个全新的Row
。要做到这一点最简单的方法是调用GetFirstChild<Row>
上sheetData
。
顺便说一句,我也不会写CellValue
的Cell
,你正在使用的公式。在那种情况下Value
,Excel会使用来防止在加载工作表时必须重新计算公式。在您的示例中,您的值是错误的。完全忽略该值可能是确保正确性的最简单方法,因为Excel将在工作表加载时计算公式。
这导致以下代码:
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(filename, true))
{
WorkbookPart workBookPart = spreadsheetDocument.WorkbookPart;
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
//find the first row in the sheet data
Row row1 = sheetData.GetFirstChild<Row>();
//create a new cell
Cell cell = new Cell() { CellReference = "I1" };
CellFormula cellformula = new CellFormula();
cellformula.Text = "IF(A2 = A1,1,0)";
cell.Append(cellformula);
//append the cell to the row
row1.Append(cell);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句