2016-11-11 20 views
10

पर एक एक्सेल फ़ाइल पढ़ें हैलो मैं अपने एएसपीनेट प्रोजेक्ट पर एक्सेल फ़ाइल अपलोड करने और पढ़ने की कोशिश कर रहा हूं लेकिन मुझे लगता है कि सभी दस्तावेज एएसपी एमवीसी 5 के लिए है। मेरा लक्ष्य पढ़ना है एक्सेल शीट और ऑब्जेक्ट्स की सूची में मानों को पास करें।एएसपीनेट कोर 1.0

यह मेरा नियंत्रक है, यह मेरी wwwroot/अपलोड करने के लिए फ़ाइल अपलोड करने के लिए काम करता है

public class HomeController : Controller 
{ 
    private IHostingEnvironment _environment; 

    public HomeController(IHostingEnvironment environment) 
    { 
     _environment = environment; 
    } 

    public IActionResult index() 
    { 
     return View(); 
    } 



    [HttpPost] 
    public async Task<IActionResult> Index(ICollection<IFormFile> files) 
    { 
     var uploads = Path.Combine(_environment.WebRootPath, "uploads"); 
     foreach (var file in files) 
     { 
      if (file.Length > 0) 
      { 
       using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create)) 
       { 
        await file.CopyToAsync(fileStream); 
       } 
      } 
     } 
     return View(); 
    } 

उत्तर

-1

ज्यादातर मामलों में यह आप ASP.NET 4 या ASP.NET कोर उपयोग कर रहे हैं जब यह बात आती है कोई फर्क नहीं पड़ता एक्सेल फ़ाइलों को पढ़ने के लिए। आपको बस एक लाइब्रेरी ढूंढनी होगी जो ऐसा करने की अनुमति दे। अपनी परियोजना में ऐसी पुस्तकालयों को जोड़ने के लिए NuGet का उपयोग करने की अनुशंसा की जाती है।

निर्देश देखें यहाँ एक NuGet पैकेज स्थापित करने के लिए कैसे: https://docs.nuget.org/ndocs/guides/install-nuget

एक पुस्तकालय है कि मैं का उपयोग करने की सिफारिश कर सकते EPPlus (https://www.nuget.org/packages/EPPlus) है।

जब आप फ़ाइल अपलोडिंग के साथ होते हैं और एक्सेल फ़ाइल को कहीं भी संग्रहीत करते हैं, तो आपको पढ़ने के लिए इसे EPPlus का उपयोग करके खोलना होगा। सरल उदाहरण निम्नानुसार है:

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

ExcelWorksheet workSheet = package.Workbook.Worksheets[0]; 

for (int i = workSheet.Dimension.Start.Column; i <= workSheet.Dimension.End.Column; i++) 
{ 
    for (int j = workSheet.Dimension.Start.Row; j <= workSheet.Dimension.End.Row; j++) 
    { 
     object cellValue = workSheet.Cells[i, j].Value; 
    } 
} 
+12

EPPlus नेट कोर पर समर्थित नहीं है लेकिन वहाँ नामित EPPlus पुस्तकालय के एक अनधिकृत बंदरगाह है EPPlus.core जिसका उपयोग एक्सेल पढ़ने और लिखने के लिए किया जा सकता है। यह देखें [लिंक] (http://www.talkingdotnet.com/import-export-xlsx-asp-net-core/) – VirendraJ

+3

मैं कहूंगा कि इससे कोई फर्क नहीं पड़ता कि विशेष रूप से यदि आप एक्सएलएस या पासवर्ड सुरक्षित एक्सेल फाइलों को पढ़ने की कोशिश कर रहे हैं। अधिकांश संकुल डेटाटेबल या ओले कनेक्शन प्रदाताओं जैसे घटित डेटा संरचनाओं का उपयोग करते हैं जिन्हें कोर में लागू नहीं किया जाता है। पासवर्ड संरक्षित फ़ाइलों को पढ़ने/लिखने के संचालन के लिए ऑफिस कॉम पुस्तकालयों की भी आवश्यकता होती है। – schwietertj

3

.NET कोर ओलेडीबी और डेटाटेबल्स में चला गया है। यह कुछ परियोजनाओं के लिए नेटकोर को खुद को बंद करने के लिए कठिन बनाता है।

यदि आप ओपनएक्सएमएल एक्सेल फाइलें (xlsx) पढ़ रहे हैं, तो अनौपचारिक एपप्लस। कोर आपकी मदद कर सकता है।

लेकिन पुराने 97-2003 प्रारूपों (xls) के लिए हमें अभी तक कोई समाधान नहीं मिला।

मुझे आशा है कि या तो एनपीओआई या एक्सेलडाटा रीडर को इस वर्ष के अंत में कोर संस्करण मिलेगा, लेकिन मुझे उस दिशा में ज्यादा गतिविधि दिखाई नहीं दे रही है।

2

ओपन package manager console दृश्य स्टूडियो में और प्रकार:

public void WriteExcel(string fileName) 
{ 


    FileInfo file = new FileInfo(fileName); 
    /// overwrite old file 
    if (file.Exists) 
    { 
     file.Delete(); 
     file = new FileInfo(fileName); 
    } 
    using (ExcelPackage package = new ExcelPackage(file)) 
    { 
     // add a new worksheet to the empty workbook 
     ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Employee"); 
     worksheet.Cells["A1"].Value = "HELLO WORLD!!!"; 
     package.Save(); 
    } 
} 

अधिक उदाहरण यहाँ: http://www.talkingdotnet.com/import-export-xlsx-asp-net-core/

0

कुछ टिप्पणियों में कहा गया है और जैसा कि

PM> Install-Package EPPlus.Core 

फ़ाइलों लेखन तो के रूप में सरल रूप में है उत्तर, नेट कोर के लिए एक अनौपचारिक ईपीप्लस पोर्ट है (मैंने अभी ठीक किया है और यह कोर 1.0, 1.1 और 2.0 का समर्थन करता है) ...

इस कोड को दर्शाता है यह करने के लिए कैसे

var filePath = @"D:/test.xlsx"; 
FileInfo file = new FileInfo(filePath); 

using (ExcelPackage package = new ExcelPackage(file)) 
{  
    ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; 
    int rowCount = worksheet.Dimension.Rows; 
    int ColCount = worksheet.Dimension.Columns; 

    var rawText = string.Empty; 
    for (int row = 1; row <= rowCount; row++) 
    { 
     for (int col = 1; col <= ColCount; col++) 
     { 
      // This is just for demo purposes 
      rawText += worksheet.Cells[row, col].Value.ToString() + "\t";  
     } 
     rawText+="\r\n"; 
    } 
    _logger.LogInformation(rawText); 
} 

नोट: आज मैं काम में इस्तेमाल किया और मैं, प्रत्येक स्तंभ के लिए सीधे उपयोग करने के लिए नाम, पंक्ति पंक्ति द्वारा दिए गए एक शब्दकोश स्तंभ नाम के साथ mathing स्तंभ संख्या बनाया है और प्रदर्शन सीएसवी फाइलों को पढ़ने के उद्देश्य से कुछ अन्य पुस्तकालयों का उपयोग करने से बेहतर था।

कुछ लिंक:
- ईपीप्लस।कोर: https://github.com/VahidN/EPPlus.Core
- यह ठोस उदाहरण के साथ एक HowTo: https://www.codeproject.com/Articles/1217036/Console-Logging-and-Reading-Excel-Files-with-NET-C

मुझे आशा है कि यह मदद करता है,

जुआन

संबंधित मुद्दे