如何使用开放XML C#从.xlsx获取单元格中显示的值

时间:2013-05-24 14:44:05

标签: c# openxml

我是C#的新手并且打开了XML,所以请耐心等待。

我有这个问题:

我需要从.xlsx文件中获取单元格值。我可以使用XlGetCellValue方法做到这一点。 但是当一个单元格(例如来自sheet1的A2)从另一个单元格(B2 sheet2)获取值时

XlGetCellValue("", "Sheet1", "A2") 返回Sheet2!B2Joe

或者当单元格包含计算(例如= C2 + D2)时,XlGetCellValue(...)会返回C2+D2120

有没有简单的方法来获得价值“乔”和“120?

2 个答案:

答案 0 :(得分:0)

这里是MSDN关于如何使用Open XML SDK 2.5获取单元格值的链接。提供了一个代码示例。

How to: Retrieve the values of cells in a spreadsheet document (Open XML SDK)

答案 1 :(得分:0)

如果您还没有下载OpenXMLSDKoolV25.msi(生产力工具),使用openxmnl可能会很麻烦。

基本上它是一个反射工具。您可以打开一个Excel文档,该工具可以创建从头开始构建相同内容所需的所有代码。

CellValue只是为了价值。使用公式你必须处理细胞配方。

EG。我在A1 = 1256中创建了一个excel文件,其中B1 = 2,在C1“= A1 * B1” 用OpenXMLSDKTool打开文件我得到了:

    public Row GenerateRow()
    {
        Row row1 = new Row(){ RowIndex = (UInt32Value)1U, Spans = new ListValue<StringValue>() { InnerText = "1:3" } };

        Cell cell1 = new Cell(){ CellReference = "A1" };
        CellValue cellValue1 = new CellValue();
        cellValue1.Text = "1256";

        cell1.Append(cellValue1);

        Cell cell2 = new Cell(){ CellReference = "B1" };
        CellValue cellValue2 = new CellValue();
        cellValue2.Text = "2";

        cell2.Append(cellValue2);

        Cell cell3 = new Cell(){ CellReference = "C1" };
        CellFormula cellFormula1 = new CellFormula();
        cellFormula1.Text = "A1*B1";
        CellValue cellValue3 = new CellValue();
        cellValue3.Text = "2512";

        cell3.Append(cellFormula1);
        cell3.Append(cellValue3);

        row1.Append(cell1);
        row1.Append(cell2);
        row1.Append(cell3);
        return row1;
    }
从这里你可以注意到CellValue和CellFormula都是Cell的孩子。 所以,假设你可以检索你的行r你可以这样:

Cell c = r.Elements<Cell>().ElementAt(2);
CellValue cv = c.CellValue;
CellFormula cf = c.CellFormula;