2012-04-16 3 views
3

너비를 자동으로 설정할 수 있도록 특정 열을 선택하려고하는데 거의 성공하지 못합니다. MSDN 버전의 GetRow를 사용하여 대신 열 컬렉션에서 열을 선택할 수 있어야합니까?OpenXML 특정 열 선택

return worksheet.GetFirstChild<SheetData>().Elements<Row>().Where(r => r.RowIndex == rowIndex).First(); 

return worksheet.GetFirstChild<SheetData>().Elements<Column>().Where(r => r.Min== columnNumber && r.Max == columnNumber).First(); 

나는 올바른 접근 방법을 취하고 있습니까? FWIW 처음부터 열을 만들고 너비를 설정하는 방법을 알고 있지만 생성자에서 열을 만들 때 어떤 데이터가 열 내부에 있는지 알지 못하기 때문에 가능하지 않습니다.

답변

1

워크 시트에 columns 객체를 추가 할 수 있습니다. 그런 다음 폭을 설정하는 방법을 만들었습니다.

Worksheet ws = new Worksheet(); 
Columns columns = new Columns(); 

columns.Append(CreateColumnData(1, 1, 14.87)); 

ws.append(columns); 


private static Column CreateColumnData(UInt32 StartColumnIndex, UInt32 EndColumnIndex, double ColumnWidth) 
    { 
     Column column; 
     column = new Column(); 
     column.Min = StartColumnIndex; 
     column.Max = EndColumnIndex; 
     column.Width = ColumnWidth; 
     column.CustomWidth = true; 
     return column; 
    } 
+0

이 방법은 1 열에 상관없이 너비가 14.87로 설정됩니다. – broguyman

+0

정확하게 맞습니다 ... 이전에 이미 할 수있었습니다 ... 내가해야 할 일은 동적으로 너비를 선택하는 것입니다. 내부의 내용을 기반으로하는 열입니다. :(이것은 도움이되지 않습니다. :(@broguyman – Kulingar

0

다른 열에 대해 너비를 설정해야하지만 동일한 문제가 있지만 웹에서 솔루션을 찾을 수 없습니다. 지금까지 제공된 답변은 지정된 너비의 열을 만드는 방법을 보여 주지만 지정된 열의 동적 너비를 업데이트하는 방법은 표시하지 않습니다. 나는 닷넷의 openxml 라이브러리에 익숙하지 않지만 DocumentFormat.OpenXml 솔기는 Office.Interop처럼 잘 문서화되지 않고 직관적이지 않습니다. 내 응용 프로그램이 하늘색 서비스로 실행 중이었기 때문에 Office.Interop을 사용할 기회가 없었습니다. 나를위한 해결책은 openxml 문서 작업을 Office.Interop과 매우 유사하게 처리하는 closedxml 라이브러리를 사용하는 것이 었습니다. 너는 그것을 할 수있다.