2016-11-11 16 views
10

こんにちは私はasp.netプロジェクトでExcelファイルをアップロードして読み込もうとしていますが、私が見つけたドキュメントはすべてASP MVC 5のものです。 私の目標はシートを凌駕し、その値をオブジェクトのリストに渡します。asp.netコア1.0のExcelファイルを読む

これは、それが来るとき、あなたがASP.NET 4またはASP.NETコアを使用している場合、それは問題ではない、それは私の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

にアップロードするファイルを働き、私のコントローラであり、 Excelファイルを読み込むそれを可能にするライブラリを見つけるだけです。このようなライブラリをプロジェクトに追加するには、NuGetを使用することをお勧めします。ここでのNuGetパッケージをインストールする方法

参照命令:私が使用することをお勧めすることができますhttps://docs.nuget.org/ndocs/guides/install-nuget

一つのライブラリはEPPlus(https://www.nuget.org/packages/EPPlus)です。

ファイルのアップロードが完了し、Excelファイルをどこかに保存している場合は、EPPlusを使用して読み取り専用で開く必要があります。簡単な例は次のとおりです。.NETのコアOLEDBで

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は、.NETのコアではサポートされていませんが、名前のEPPlusライブラリーの非公式なポートがありますEPPlus.coreは、読み書きに威力を発揮します。これを参照してください。(http://www.talkingdotnet.com/import-export-xlsx-asp-net-core/) – VirendraJ

+3

xlsやパスワードで保護されたExcelファイルを読んでいると特に問題はありません。ほとんどのパッケージは、コアに実装されていないデータテーブルやOLE接続プロバイダなどの償却されたデータ構造を使用します。また、パスワードで保護されたファイルには、読み取り/書き込み操作のためのOffice comライブラリが必要です。 – schwietertj

3

とのDataTableがなくなっています。これにより、いくつかのプロジェクトでnetcoreに移植することが難しくなります。

OpenXml Excelファイル(xlsx)を読んでいる場合は、非公式のEpplus.Coreが役に立ちます。

しかし、以前の97-2003形式(xls)では解決策がまだ見つかりませんでした。

NPOIまたはExcelDataReaderのいずれかが今年後半にコアバージョンを取得することを希望しますが、その方向での活動はあまりありません。

2

開き、Visual Studioとタイプで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(); 
    } 
} 

より多くの例:

PM> Install-Package EPPlus.Core 

がファイルを書き込むと同じくらい簡単のようにしているhttp://www.talkingdotnet.com/import-export-xlsx-asp-net-core/

0

いくつかのコメントで述べたようにし、答え、.Net Coreへの不公平なEPPlusポートがあります(私は今Chekedしており、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の列番号を作成し、名前を与えられ、行ごとをし、パフォーマンスは、csvファイルの読み込みを目的とした他のライブラリを使用するよりも優れていました。

いくつかのリンク:
- EPPlus。コア:https://github.com/VahidN/EPPlus.Core
- この具体的な例とHOWTO: https://www.codeproject.com/Articles/1217036/Console-Logging-and-Reading-Excel-Files-with-NET-C

私はそれが役に立てば幸い、

フアン

関連する問題