c# मैं एपप्लस का उपयोग कर एक्सेल टेबल में पंक्तियों के माध्यम से कैसे पुन: प्रयास करूं?




excel epplus (4)

मैं epplus लिए नया epplus , और मैं एक्सेल टेबल से कुछ मूल्य पढ़ने की कोशिश कर रहा हूं।

अभी तक मेरे पास इतना ही है:

var fileInfo = new FileInfo(filename);
using(var excelPackage = new OfficeOpenXml.ExcelPackage(fileInfo))
{
    foreach (var sheet in excelPackage.Workbook.Worksheets)
    {
        foreach (ExcelTable table in sheet.Tables)
        {
             foreach(var row in table.Rows)  // <-- !!
             { ... }
        }
    }
}

हालांकि, अब मैं स्टंप हो गया हूं, क्योंकि ExcelTable केवल Columns संपत्ति है, लेकिन एक Rows संपत्ति नहीं है जैसा कि मैंने उम्मीद की थी। मुझे लाइब्रेरी में किसी ऑब्जेक्ट पर Rows संपत्ति नहीं मिल रही है।

पंक्ति के लिए पंक्ति पढ़ने, मैं एक टेबल के माध्यम से कैसे पुन: प्रयास करूं?


ExcelRange रूप में पूरी पंक्ति प्राप्त करने का एक तरीका यहां ExcelRange जिसे फिर पुनरावृत्त किया जा सकता है या LINQ के लिए उपयोग किया जा सकता है:

for (var rowNum = 1; rowNum <= sheet.Dimension.End.Row; rowNum++)
{
    var row = sheet.Cells[string.Format("{0}:{0}", rowNum)];
    // just an example, you want to know if all cells of this row are empty
    bool allEmpty = row.All(c => string.IsNullOrWhiteSpace(c.Text));
    if (allEmpty) continue; // skip this row
    // ...
}

मेरे पास एक ही समस्या थी और मैंने डेटा सीमा प्राप्त करने के लिए तालिका सीमा और ExcelWorksheet प्राप्त करने के लिए ExcelTable का उपयोग करके इसे हल किया। तो आपका कोड इस तरह कुछ दिखाई देगा:

var fileInfo = new FileInfo(filename);
using(var excelPackage = new OfficeOpenXml.ExcelPackage(fileInfo))
{
    foreach (var sheet in excelPackage.Workbook.Worksheets)
    {
        foreach (ExcelTable table in sheet.Tables)
        {
            ExcelCellAddress start = table.Address.Start;
            ExcelCellAddress end = table.Address.End;

            for (int row = start.Row; row <= end.Row; ++row)
            {
                ExcelRange range = sheet.Cells[row, start.Column, row, end.Column];
                ...
            }
        }
    }
}

आपको टेबल हेडर या अन्य चीज़ों की जांच करने की आवश्यकता है, लेकिन यह मेरे लिए चाल है।


एक ही समस्या पर मदद की तलाश करते समय, मैं इस link ठोकर खाई। यह निश्चित रूप से मेरे लिए काम किया! इंटरऑप ऑब्जेक्ट्स का उपयोग करने से निश्चित रूप से बेहतर है। :)

हालांकि मैंने इसे थोड़ा अनुकूलित किया:

var package = new ExcelPackage(new FileInfo("sample.xlsx"));

ExcelWorksheet workSheet = package.Workbook.Worksheets[0];
var start = workSheet.Dimension.Start;
var end = workSheet.Dimension.End;
for (int row = start.Row; row <= end.Row; row++)
{ // Row by row...
    for (int col = start.Column; col <= end.Column; col++)
    { // ... Cell by cell...
        object cellValue = workSheet.Cells[row, col].Text; // This got me the actual value I needed.
    }
}

मैं एपप्लस के बारे में निश्चित नहीं हूं, लेकिन मैंने सोचा कि मैं LinqToExcel का उपयोग करने का एक त्वरित सुझाव LinqToExcel

var excel = new ExcelQueryFactory(excel);

var info = excel.Worksheet("Sheet1")
                .Select(z=> new
                     {
                      Name = row["Name"].Cast<string>(),
                      Age = row["Age"].Cast<int>(),
                     }).ToList();

आप इसे NuGet से प्राप्त कर सकते हैं

Install-Package LinqToExcel