質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
blazor

Blazorは、マイクロソフトが開発している.NETベースのWebアプリフレームワークです。C#でフロントエンドもバックエンドも一貫して書くことが可能。クライアントサイド(WebAssembly)とサーバーサイド形式のホスティングモデルがあります。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

0回答

698閲覧

C#BlazorWebassemblyからExcelの出力したファイルが開かない

Y.Mamoru

総合スコア47

blazor

Blazorは、マイクロソフトが開発している.NETベースのWebアプリフレームワークです。C#でフロントエンドもバックエンドも一貫して書くことが可能。クライアントサイド(WebAssembly)とサーバーサイド形式のホスティングモデルがあります。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2022/10/04 05:32

編集2022/10/04 05:38

前提

C#BlazorWebassemblyを使用したアプリケーションから
Excelファイルを作成、エクスポートしたのですが開くことができません。

実現したいこと

C#BlazorWebassemblyアプリケーションからオリジナルのExcelファイルを出力し、開くことができる

発生している問題・エラーメッセージ

ファイル自体は生成できるのですが、
いざ開くときに「ファイル形式、またはファイル拡張子が正しくない」とエラーが表示され開くことができません。

イメージ説明

該当のソースコード

C#

1/* コントローラ内のファイル生成処理を抜粋しています */ 2 3// GET: api/rk033/downloadFile/{type} 4 [HttpGet("downloadFile/{type}")] 5 public async Task<IActionResult> FileDownload(string type) 6 { 7 /* DBからデータを取得してファイルに書き出す処理 */ 8 List<seihin> result = new List<seihin>(); 9 string sql = ""; 10 11 using var transaction = _context.Database.BeginTransaction(); 12 13 try 14 { 15 //データを取得(今回は仮で帳票一覧を取得) 16 sql =insert~~; //データの取得自体は問題ないので今回は記載を省きます 17 //insert件数を取得 18 res = _context.Database.ExecuteSqlRaw(sql); 19 //getterを通じてselect処理を行う 20 result = await _context.seihin.ToListAsync(); 21 //トランザクションのコミット 22 transaction.Commit(); 23 //SQLに空白処理 24 sql = ""; 25 26 /* ファイル作成 */ 27 //ファイルを生成する 28 StreamWriter file_sample = new StreamWriter(@"C:\Users\XXX\Desktop\test.xlsb", false, Encoding.UTF8); 29 //取得したデータを書き込む 30 for(int i = 0; i < res; i++) 31 { 32 file_sample.WriteLine(result[i].code); 33 } 34 //ファイルを閉じる 35 file_sample.Close(); 36 37 } 38 catch(Exception e) 39 { 40 Console.WriteLine(e.Message); 41 } 42 43 44 /* 出力したファイルのダウンロード処理 */ 45 46 //「現在のフォルダパス」と「File」を繋いで絶対パスを作成する 47 string file = @"C:\Users\XXX\Desktop\test.xlsb"; 48 //パスに該当するファイルを開く 49 FileStream stream = new FileStream(file, FileMode.Open); 50 //ファイルをダウンロード 51 return File(stream, "application/octet-stream", "test.xlsb"); 52 }

ファイル生成に使用しているコードを載せさせていただきましたが、
現状ファイルの生成はうまくいっています。
またCSVファイル限定で、ファイルを開くこともできており、中身のデータも正しいことを確認できています。
xlsbファイル、xlsxファイルで生成、出力する方法を知りたいと考えています。
よろしくお願い致します。

試したこと

出力するファイルをcsvファイルで行うと、問題なくファイルを開くこともできました。
ただ希望はxlsbファイル、xlsxファイルで生成・出力・開くまでできるようにしたいです。
csvファイルで成功したときは、ファイルの拡張子をcsvに変更しただけでした。

補足情報(FW/ツールのバージョンなど)

VisualStudioバージョン:17.26
.NET Frameworkバージョン:4.8.04
NuGetパッケージマネージャバージョン:6.2.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/10/04 06:39 編集

何が聞きたいのですか。Excel 生成のやり方? DB に SQL を投げてデータを取得して、それを Excel 形式に加工したい? であれば、Blazor は関係ないので質問の内容から外してください。タグも。 それから圧倒的に情報不足であることを認識してください。回答者・閲覧者はここに書いてあること以外は知り得ないことを認識して、どういう情報を提供すべきかよく考えて質問を書きなおしましょう。 前のスレッド https://teratail.com/questions/m5z61nw8i1726n のようなイイカゲンなことはやめてくださいね。
Zuishin

2022/10/04 07:08 編集

わかりにくいそうなので削除
Zuishin

2022/10/04 07:08 編集

わかりにくいそうなので削除
Y.Mamoru

2022/10/04 06:27

コメントありがとうございます。 To SurferOnWwwさん やはりBlazorは関係ないですかね? そうはおもったんですが、見る人の母数が増えると思いつけさせていただきました。 そしてSurferOnWwwさん的にはどのような追加情報が必要でしょうか? To Zuishinさn xlsbは古いのですね、ありがとうございます。 xlsxも今試してみたのですが、結果は変わらず 「ファイルはできるが、開かない」という状態でした。
Y.Mamoru

2022/10/04 06:28

StreamWriter.WriteLineの使い方が違っていたといことでしょうか?
退会済みユーザー

退会済みユーザー

2022/10/04 06:34

> やはりBlazorは関係ないですかね? > そうはおもったんですが、見る人の母数が増えると思いつけさせていただきました。 逆ですね。見ないでスルーする人が増えると思います。 > そしてSurferOnWwwさん的にはどのような追加情報が必要でしょうか? 質問に質問で返すのはやめよう。まずこっちの質問に答えよう。再掲します。 何が聞きたいのですか。Excel 生成のやり方? DB に SQL を投げてデータを取得して、それを Excel 形式に加工したい?
Y.Mamoru

2022/10/04 06:37

To SurferOnWwwさん 聞きたいことは「正しく開くことができるExcelファイル(xlsxファイル)を生成する方法」です。 SurferOnWwwさんは方法がわかりますでしょうか?
退会済みユーザー

退会済みユーザー

2022/10/04 06:49

答えになってません。 DB に SQL を投げてデータを取得して、それを Excel 形式に加工したい? ・・・と聞いたんだけど。
Y.Mamoru

2022/10/04 06:53

To SurferOnWww 無駄なやりとりふやしたくないんやこっちは、 自分の文章も読めへんのか、SurferOnWwwは。 >何が聞きたいのですか。Excel 生成のやり方? DB に SQL を投げてデータを取得して、それを Excel 形式に加工したい? って聞いてるんやろ? てことは ・Excel 生成のやり方? ・DB に SQL を投げてデータを取得して、それを Excel 形式に加工したい? の2つを例としてあげてくれながら、結局は「何が聞きたいのですか。」の部分が質問の核やろが。 そのつもりで書いてへんのやったら、SurferOnWwwさんはわかりにくいので 関わっていただかなくてOKです。
退会済みユーザー

退会済みユーザー

2022/10/04 07:14

DB に SQL を投げてデータを取得して、それを Excel 形式に加工したい? ・・・と言う質問に君は Yes とも No とも答えてないのを分かってる? なんでそれすら答えられないの?
YAmaGNZ

2022/10/04 07:18

エクセルファイルって拡張子がxlsxのテキストファイルじゃないというのは理解されているのですかね?
Y.Mamoru

2022/10/04 07:24

To YAmaGNZさん いえ、もともとわかっていなかったです。 こちらのコメントでZuishinさんが「バイナリ形式ファイル~」ということを言っていたので、 今調べてみて、テキストファイルではないことは理解できたところです。 現状、C#からバイナリ形式ファイルの出力の方法を調べているところになります
YAmaGNZ

2022/10/04 07:27

自分で出力するとなると、エクセルファイルのファイルフォーマットを完全に理解し出力しなくてはならないのでエクセルファイルを扱える何かしらのライブラリを使用されるべきかと思います。
Y.Mamoru

2022/10/04 07:34

To YAmaGNZさん ありがとうございます。 ライブラリというのは、「ExcelDataReader」や「EPPlus」のことであっていますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問