불행히도 워드 프로세싱 테이블 (DocumentFormat.OpenXml.WordProcessing.Table
)에는 "열"개념이없고 행과 셀만 있습니다. 첫 번째 행에 열 이름이 포함되어 있고 모든 행에 같은 수의 셀이 포함된다고 가정하면 작업을 완료 할 수 있습니다. 한가지주의해야 할 것은 (위의 의사 코드에서 하나의 문제) 현재 반복하고있는 열거 형에서 삭제할 수 없다는 것입니다. 여기에 내가 이러한 목표를 달성 할 방법은 다음과 같습니다
var rows = table.Elements<TableRow>();
var firstRowCells = rows.ElementAt(0).Elements<TableCell>();
var cellNumbersToDelete = new List<int>();
for(int i=0; i<firstRowCells.Count(); i++)
if(GetCellText(firstRowCells.ElementAt(i)) == "Hello")
cellNumbersToDelete.Add(i);
foreach(var cellNumberToDelete in cellNumbersToDelete) {
foreach(var row in rows) {
cellToDelete = row.ElementAt(cellNumberToDelete);
row.RemoveChild(cellToDelete);
}
}
나는 아마 일부 조정이 필요합니다 있도록이 솔루션을 테스트하기 위해 지금 시간이 없어,하지만 당신에게 당신의 작업을 수행하는 방법에 대한 일반적인 아이디어를 줄 것이다 . 위의 참조 방법 GetCellText
은 다음과 같이 표시됩니다.
string GetCellText(TableCell cell) {
var p = cell.Elements<Paragraph>().First();
var r = p.Elements<Run>().First();
var t = r.Elements<Text>().First();
return t.Text;
}