open xml을 사용하여 행을 복제하고 삽입하려고 할 때 현재 문제가 있습니다.openxml을 사용하여 특정 행 앞에 복제 행을 추가 할 수 없습니다. VS2017의 C#
아래 코드에서 srcRowIdx와 refRow가 동일한 인덱스 인 경우 삽입 된 행으로 행을 복제하고 엑셀 시트를 성공적으로 저장할 수 있습니다. 그러나 srcRowIdx와 refRow가 다른 경우 Excel 시트가 손상됩니다. 왜 그렇게 생각하는지 누군가를 나에게 밝힐 수 있니?
public Row CopyLine(SpreadsheetDocument excelDoc, string sheetName, int srcRowIdx, int refRow)
{
var worksheetPart = GetWorksheetPart(excelDoc, sheetName);
var sheetData = worksheetPart.Worksheet.Descendants<SheetData>().First();
var srcRow = GetRow(worksheetPart, srcRowIdx);
var clonedRow = (Row)srcRow.CloneNode(true);
var rowRef = GetRow(worksheetPart, refRow);
//Update all indexes to index+1
IEnumerable<Row> rows = sheetData.Descendants<Row>().Where(r => r.RowIndex.Value >= refRow);
foreach (Row row in rows)
{
var clonedRowIndex = Convert.ToUInt32(row.RowIndex.Value + 1);
foreach (Cell cell in row.Elements<Cell>())
{
// Update the references for reserved cells.
string cellReference = cell.CellReference.Value;
cell.CellReference =
new StringValue(cellReference.Replace(row.RowIndex.Value.ToString(), clonedRowIndex.ToString()));
}
// Update the row index.
row.RowIndex = new UInt32Value(clonedRowIndex);
}
sheetData.InsertBefore(clonedRow, rowRef);
worksheetPart.Worksheet.Save();
return clonedRow;
}
스프레드 시트에 링크를 게시하면 더 잘 도와 드리겠습니다. – Taterhead
https://drive.google.com/file/d/0BxwJ_UygiRkKTlR4ZGM3VHdteDQ/view?usp=sharing –
인증 오류 : https://drive.google.com/file/d/를 사용중인 템플릿의 링크입니다. 0BxwJ_UygiRkKOHBEWHcwZXkyUlk/view? usp = sharing –