2012-04-16 13 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

私は同じ問題を抱えていましたが、異なる列の幅を設定する必要がありましたが、Web上で解決策を見つけることができませんでした。これまでに提供された回答は、指定された幅の列を作成する方法を示していますが、指定された列の動的な幅を更新する方法は示していません。私は.NETのopenxmlライブラリに慣れていないかもしれませんが、DocumentFormat.OpenXmlの継ぎ目はOffice.Interopのようにうまく文書化されておらず、直感的ではありません。私のアプリケーションが晴れやかなサービスとして走っていたので、私はOffice.Interopを使う機会がなかった。私のための解決策は、openxmlドキュメントでの作業をOffice.Interopのように単純化するclosedxmlライブラリを使用することでした。あなたはそれをGoogleにすることができます。

関連する問題