kullanarak excel sayfasından Sekme adları nasıl alınır. Elektronik tablo verilerini bir veri tablosuna, sekmeye göre yerleştirmem gerekiyor, ancak her sekmeden veri eklediğimi, sekme adının ne olduğunu ve sekme adını veri tablosundaki bir sütuna eklediğimi bulmam gerekiyor . İçinde 182 sütun vardır bir tablo belge var openxml
Bu
ben veri tablosunu kurmak nasıl.Sonra çalışma kitabındaki döngü ve sheetData
nesneye detaya ve hücre verilerini alma, her satır ve sütunun içinden yürümek.
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)));
Ancak veriler Tablo için kullanılacak dize dizinin sonunda, ben sekme adı eklemem gerekiyor. Açık XML'de sayfada döngü yaptığım gibi sekme adını nasıl bulabilirim?
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;
Sadece bir not: Burada
benim şimdiye kadar kodudur daha önce ancak ben gibi farkOpenXmlElementList list = sheets.ChildElements;
yılında "liste" nin InnerXml özelliğinden sekme isimleri aldın E-tablodaki döngü, sekme adlarını doğru sırada almaz.
http://msdn.microsoft.com/en-us/library/bb507946. aspx –
sadece ben sekme isimleri dışarı çekmek istiyorum eğer gayet iyi çalışıyor .. Inner/dış xml ayrıştırma yapabilirsiniz .. ama ben kendi For döngüsü içinde yapmak istiyorum .. Ben Sheet erişmekte sorun yaşıyorum SheetData seviyesinde iken .. – Kwalke001
Adını almak için "çalışma sayfası" nesnesinde çalışamazsınız? Bu sayfadaki son kod örneği, bir sayfanın özniteliklerine rağmen nasıl döngü yapılacağını gösterir: muhtemelen sayfa adı bu özelliklerden biridir (kendimi hiç deneyimim yoktur). –