我是C#的新手并且打开了XML,所以请耐心等待。
我有这个问题:
我需要从.xlsx文件中获取单元格值。我可以使用XlGetCellValue方法做到这一点。 但是当一个单元格(例如来自sheet1的A2)从另一个单元格(B2 sheet2)获取值时
XlGetCellValue("", "Sheet1", "A2")
返回Sheet2!B2Joe
。
或者当单元格包含计算(例如= C2 + D2)时,XlGetCellValue(...)
会返回C2+D2120
有没有简单的方法来获得价值“乔”和“120?
答案 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;