我有一个包含182列的电子表格文档。我需要将电子表格数据逐个标签页放入数据表中,但是我需要在从每个标签页添加数据时找出该标签页的名称,并将其添加到数据表中的一列中。
以下是我设置数据表的方式。
然后我在工作簿中循环,并深入到
以下是我设置数据表的方式。
然后我在工作簿中循环,并深入到
sheetData
对象,遍历每一行和每一列,获取单元格数据。DataTable dt = new DataTable();
for (int i = 0; i <= col.GetUpperBound(0); i++)
{
try
{
dt.Columns.Add(new DataColumn(col[i].ToString(), typeof(string)));
}
catch (Exception e)
{
MessageBox.Show("Uploader Error" + e.ToString());
return null;
}
}
dt.Columns.Add(new DataColumn("SheetName", typeof(string)));
然而,对于我用于 Data Table 的字符串数组的末尾位置,我需要添加选项卡名称。当我在 Open XML 中循环遍历工作表时,如何找到选项卡名称?
这是我目前的代码:
using (SpreadsheetDocument spreadSheetDocument =
SpreadsheetDocument.Open(Destination, false))
{
WorkbookPart workbookPart = spreadSheetDocument.WorkbookPart;
Workbook workbook = spreadSheetDocument.WorkbookPart.Workbook;
Sheets sheets =
spreadSheetDocument
.WorkbookPart
.Workbook
.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>();
OpenXmlElementList list = sheets.ChildElements;
foreach (WorksheetPart worksheetpart in workbook.WorkbookPart.WorksheetParts)
{
Worksheet worksheet = worksheetpart.Worksheet;
foreach (SheetData sheetData in worksheet.Elements<SheetData>())
{
foreach (Row row in sheetData.Elements())
{
string[] thisarr = new string[183];
int index = 0;
foreach (Cell cell in row.Elements())
{
thisarr[(index)] = GetCellValue(spreadSheetDocument, cell);
index++;
}
thisarr[182] = ""; //need to add tabname here
if (thisarr[0].ToString() != "")
{
dt.Rows.Add(thisarr);
}
}
}
}
}
return dt;
注意:我之前是从“list”元素的InnerXML属性中获取选项卡名称的。
OpenXmlElementList list = sheets.ChildElements;
但是,我注意到当我在电子表格中循环时,它并没有按正确的顺序获取选项卡的名称。