前提
C#BlazorWebassemblyを使用したアプリケーションから
Excelファイルを作成、エクスポートしたのですが開くことができません。
実現したいこと
C#BlazorWebassemblyアプリケーションからオリジナルのExcelファイルを出力し、開くことができる
発生している問題・エラーメッセージ
ファイル自体は生成できるのですが、
いざ開くときに「ファイル形式、またはファイル拡張子が正しくない」とエラーが表示され開くことができません。

該当のソースコード
C#
/* コントローラ内のファイル生成処理を抜粋しています */ // GET: api/rk033/downloadFile/{type} [HttpGet("downloadFile/{type}")] public async Task<IActionResult> FileDownload(string type) { /* DBからデータを取得してファイルに書き出す処理 */ List<seihin> result = new List<seihin>(); string sql = ""; using var transaction = _context.Database.BeginTransaction(); try { //データを取得(今回は仮で帳票一覧を取得) sql =insert~~; //データの取得自体は問題ないので今回は記載を省きます //insert件数を取得 res = _context.Database.ExecuteSqlRaw(sql); //getterを通じてselect処理を行う result = await _context.seihin.ToListAsync(); //トランザクションのコミット transaction.Commit(); //SQLに空白処理 sql = ""; /* ファイル作成 */ //ファイルを生成する StreamWriter file_sample = new StreamWriter(@"C:\Users\XXX\Desktop\test.xlsb", false, Encoding.UTF8); //取得したデータを書き込む for(int i = 0; i < res; i++) { file_sample.WriteLine(result[i].code); } //ファイルを閉じる file_sample.Close(); } catch(Exception e) { Console.WriteLine(e.Message); } /* 出力したファイルのダウンロード処理 */ //「現在のフォルダパス」と「File」を繋いで絶対パスを作成する string file = @"C:\Users\XXX\Desktop\test.xlsb"; //パスに該当するファイルを開く FileStream stream = new FileStream(file, FileMode.Open); //ファイルをダウンロード return File(stream, "application/octet-stream", "test.xlsb"); }
ファイル生成に使用しているコードを載せさせていただきましたが、
現状ファイルの生成はうまくいっています。
またCSVファイル限定で、ファイルを開くこともできており、中身のデータも正しいことを確認できています。
xlsbファイル、xlsxファイルで生成、出力する方法を知りたいと考えています。
よろしくお願い致します。
試したこと
出力するファイルをcsvファイルで行うと、問題なくファイルを開くこともできました。
ただ希望はxlsbファイル、xlsxファイルで生成・出力・開くまでできるようにしたいです。
csvファイルで成功したときは、ファイルの拡張子をcsvに変更しただけでした。
補足情報(FW/ツールのバージョンなど)
VisualStudioバージョン:17.26
.NET Frameworkバージョン:4.8.04
NuGetパッケージマネージャバージョン:6.2.1

0 コメント