OpenXML选择特定列

时间:2012-04-16 18:08:14

标签: c# excel openxml spreadsheetml

我正在尝试选择一个特定的列,以便我可以自动设置它的宽度,但收效甚微。我是否应该无法使用MSDN的GetRow版本来从列集合中选择列?

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我知道如何从头开始创建列并设置宽度,但这是不可行的,因为当我在构造函数中创建它时,我不知道列中的数据是什么。

3 个答案:

答案 0 :(得分:1)

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

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;
    }

答案 1 :(得分:0)

他没有写那种方法。该方法来自一篇完整的文章,该文章能够根据单元格值的长度设置列的宽度:http://polymathprogrammer.com/2010/01/11/custom-column-widths-in-excel-open-xml/

希望这有帮助! ;)

答案 2 :(得分:0)

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