У меня есть документ электронной таблицы, в котором 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)));
Однако в конце массива строк, который я использую для таблицы данных, мне нужно добавить имя вкладки. Как я могу узнать имя вкладки, когда я зацикливаюсь на листе в 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;
Просто примечание: я ранее получал имена вкладок из свойства InnerXML «list» в
OpenXmlElementList list = sheets.ChildElements;
, однако я заметил, что когда я зацикливаю электронную таблицу, это не так. получить названия вкладок в правильном порядке.