web-dev-qa-db-ja.com

EPPlusでExcelファイルを読み取ろうとすると、サーバーでは機能しますが、ブラウザーでは機能しません。

プロジェクトを公開して実行したときonサーバーで動作しました。 EPPlusは、4つのワークシートすべてを見つけ、それらを繰り返し処理して、データをSQLにアップロードしました。

しかし、ブラウザまたは同僚のブラウザで実行すると、ワークシートが0個表示されます。

なぜこれが起こっているのか考えはありますか?その時点でのコードにはそれほど多くはありませんが、その部分は次のとおりです。

using (ExcelPackage package = new ExcelPackage(new FileInfo(strFile)))
{
    if (package.Workbook.Worksheets.Count <= 0)
        strError = "Your Excel file does not contain any work sheets";
    else
    {
        foreach (ExcelWorksheet worksheet in package.Workbook.Worksheets)
        {
9
ernest

EPPlusはファイルをメモリにロードできます。あなたはそれをそのようにしていないだけです。これを行うと、ファイルシステムからの読み取りで問題が発生する可能性が低くなると思います。アップロードしたファイルを最初にファイルとして使用しなくてもバイト配列に変換できますが、私の例では既存のファイルを開いています。ファイルのアップロード方法のコードを提供していただければ、例を更新できます。

byte[] file = File.ReadAllBytes(@"C:\file.xlsx");
using (MemoryStream ms = new MemoryStream(file))
using (ExcelPackage package = new ExcelPackage(ms))
{
    if (package.Workbook.Worksheets.Count == 0)
        strError = "Your Excel file does not contain any work sheets";
    else
    {
        foreach (ExcelWorksheet worksheet in package.Workbook.Worksheets)
        {
15
mason