使用 OpenXML 读取 Excel 个文件
Read Excel file using OpenXML
我正在编写一个 c# 程序来使用 OpenXML 读取 excel 文件。
我在 column.I 的 excel 文件的一列中添加了一个单词列表,想读取它们并添加到数组列表中。
我正在使用下面的代码
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePatah + "\" + fileName, false))
{
WorkbookPart workbookPart = doc.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
ArrayList data = new ArrayList();
foreach (Row r in sheetData.Elements<Row>())
{
foreach (Cell c in r.Elements<Cell>())
{
data.Add(c.CellValue.Text);
}
}
}
我期待的是 1、2、3、4 等,同时我期待列出这些词。
我需要做什么才能得到这些词?
实际的字符串存储在SharedStringTable中。您得到的只是对该字符串 table.
中元素的引用
这是您修改后的示例,用于从字符串 table:
中检索值
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePatah + "\" + fileName, false))
{
WorkbookPart workbookPart = doc.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
ArrayList data = new ArrayList();
foreach (Row r in sheetData.Elements<Row>())
{
foreach (Cell c in r.Elements<Cell>())
{
if (c.DataType != null && c.DataType == CellValues.SharedString)
{
var stringId = Convert.ToInt32(c.InnerText); // Do some error checking here
data.Add(workbookPart.SharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ElementAt(stringId).InnerText);
}
}
}
}
请注意,这只是一个粗略的示例。有关更完整的示例,您可以查看 here.
此外,根据您的需要,您可能会发现使用 EPPlus 之类的库比 OpenXML SDK 更容易(您可以直接读取和写入单元格,而不必担心实际的文档格式)。
我正在编写一个 c# 程序来使用 OpenXML 读取 excel 文件。 我在 column.I 的 excel 文件的一列中添加了一个单词列表,想读取它们并添加到数组列表中。 我正在使用下面的代码
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePatah + "\" + fileName, false))
{
WorkbookPart workbookPart = doc.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
ArrayList data = new ArrayList();
foreach (Row r in sheetData.Elements<Row>())
{
foreach (Cell c in r.Elements<Cell>())
{
data.Add(c.CellValue.Text);
}
}
}
我期待的是 1、2、3、4 等,同时我期待列出这些词。 我需要做什么才能得到这些词?
实际的字符串存储在SharedStringTable中。您得到的只是对该字符串 table.
中元素的引用这是您修改后的示例,用于从字符串 table:
中检索值using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePatah + "\" + fileName, false))
{
WorkbookPart workbookPart = doc.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
ArrayList data = new ArrayList();
foreach (Row r in sheetData.Elements<Row>())
{
foreach (Cell c in r.Elements<Cell>())
{
if (c.DataType != null && c.DataType == CellValues.SharedString)
{
var stringId = Convert.ToInt32(c.InnerText); // Do some error checking here
data.Add(workbookPart.SharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ElementAt(stringId).InnerText);
}
}
}
}
请注意,这只是一个粗略的示例。有关更完整的示例,您可以查看 here.
此外,根据您的需要,您可能会发现使用 EPPlus 之类的库比 OpenXML SDK 更容易(您可以直接读取和写入单元格,而不必担心实际的文档格式)。