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

您可以将一个列对象添加到工作表中。然后我做了一个设置宽度的方法。

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 2012-04-16 21:20:10

+0

你是完全正确的...我已经可以做到这一点之前...我需要做的是动态选择的宽度该列基于它内部的内容。 :(这没有帮助。:(@broguyman – Kulingar 2012-04-19 17:14:35

0

我有同样的问题,需要设置不同列的宽度,但无法找到网络上的解决方案。目前为止提供的答案只是显示如何创建具有指定宽度的列,而不是如何动态更新指定列的宽度。可能我对.net的openxml库不太熟悉,但DocumentFormat.OpenXml接缝没有很好的文档记录,也不像Office.Interop那样直观。由于我的应用程序是以Azure服务运行的,因此我没有机会使用Office.Interop。对我来说,解决方案是使用closedxml库,它可以像使用Office.Interop一样简化使用openxml文档的工作。你可以谷歌它。