🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Q&A

解決済

1回答

4535閲覧

C#でExcelファイルを出力し、印刷を行うプログラムを作成したい

nekosuke123

総合スコア6

C#

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

0グッド

0クリップ

投稿2020/12/17 06:55

編集2020/12/17 07:06

前提・実現したいこと

タイトルの通りC#でExcelファイルを出力して、印刷を行うまでの一通りをプログラムで行いたいと考えています。
現在csvファイルで各個人の帳票ファイルの出力をし、Excelで出力したcsvファイルを開いて印刷をするというプログラムを作成したのですが、仕様の変更により、各個人の帳票ファイルの保存という作業がいらなくなりました。
その仕様変更により、印刷をしたいだけの為にファイルを作成するという処理を省きたいと考えました。

仕様変更により以下のような処理にプログラムを変更したいのですが分からない点がいくつかあるため質問させていただきました。
【変更前】
①保存先、ファイル名の指定をユーザーに問う→②新規ファイル作成or既存ファイルに上書き
①excelでcsvファイルを開く→②excelの機能で印刷

【変更後】
初期設定:上書きしても消えないテンプレート?セルの大きさや枠線を設定したexcelのファイルを用意しておく
①プログラムで用意していたexcelのファイルに上書き保存→②C#でexcelファイルを印刷する処理を行う

このように変更したいのですが初期設定の上書きしても消えないテンプレートのようなものは作れますでしょうか?
ファイル自体は上書きするが、用意しておいたセルサイズや枠線は変わらずあてはめれるみたいな機能を持ったファイルを作りたいです。その場合csvファイルとしてのファイルへの書き込み方の変更点、このように書けばいいなども教えていただきたいです。(参考になるサイトなどでも)

変更前はファイルの指定から始まっていた処理を最初からプリンターの選択、選択が完了したら印刷開始のような処理にしたいです。

長々と説明すみません。自分でも調べたりなどはしているのですが、どのように調べればいいのかもいまいち分からず苦戦しています。ヒントや、参考になるサイトだけでもいいので教えていただけると幸いです。

変更前の処理コード

いらないかもしれませんが一応現在のプログラムです・・・

C#

1private void Button_Click4(object sender, RoutedEventArgs e) 2 { 3 List<List<string>> cells = get.getcell 4 Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); 5 //保存先の初期値(マイドキュメント) 6 dlg.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal); 7 dlg.Title = "保存先のファイルを選択してください"; 8 dlg.Filter = "CSVファイル(*.csv)|*.csv"; 9 if (dlg.ShowDialog() == true) 10 { 11 try 12 { 13 using (var sw = new System.IO.StreamWriter(dlg.FileName, false, System.Text.Encoding.GetEncoding("Shift_JIS"))) 14 { 15 sw.Write("ID,"); 16 sw.Write("氏名,"); 17 sw.Write("生年月日,"); 18 sw.Write("性別,"); 19 sw.Write("入社年月日,,"); 20 sw.Write(data.id + ","); 21 sw.Write(data.name + ","); 22 sw.Write(data.birthday + ","); 23 sw.Write(data.sex + ","); 24 sw.Write(data.nyushabi + ",,"); 25 sw.WriteLine(); 26 sw.Write("趣味,"); 27 sw.Write("年齢,"); 28 sw.WriteLine("特技"); 29 for (int i = 0; i < Count; i++) 30 { 31 for (int j = 0; j < cell[i].Count; j++) 32 { 33 sw.Write(cell[i][j] + ","); 34 } 35 sw.WriteLine(); 36 } 37 MessageBox.Show("保存しました"); 38 } 39 } 40 catch (SystemException ex) 41 { 42 Console.WriteLine(ex.Message); 43 } 44 } 45 } 46 47 48

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

Excel 2019
Visual Studio 2019

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

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

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

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

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

KoichiSugiyama

2020/12/17 07:23

検索ワード「C# Excel 出力」で検索するとhttps://note.com/huilingtech/n/ne208e4b968d5 というサイトがヒットしますが、こちらは参照されましたか?ご自身で調べた内容を列挙するのが難しい場合、使用した検索ワードや参考にしたサイトだけでも提示していただくと、回答する方の二度手間が回避でき、回答を得られやすいと思います。
guest

回答1

0

自己解決

テンプレートファイル、印刷用ファイルを別にして作成しました。

投稿2020/12/17 08:45

nekosuke123

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問