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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

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

Q&A

解決済

1回答

2546閲覧

EPPlusにてcsvからExcelファイルを生成する

kaiserdoragon

総合スコア21

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

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

0グッド

0クリップ

投稿2020/03/26 06:54

編集2020/03/26 08:34

お世話になります。
今回下記のURLのEPPlusを用いてCVSからExcelのファイル作成について
サイトのコードを試しているのですが、ファイルが作成もされず
変化もエラーも起こりません。

https://dev.classmethod.jp/articles/genelate-excel-epplus/

C#

1 2using System; 3using System.IO; 4using System.Reflection; 5using System.Linq; 6using OfficeOpenXml; 7 8namespace ExcelGenelator 9{ 10 class MainClass 11 { 12 public static void Main(string[] args) 13 { 14 //args = new String[] { "input.csv", "output.xlsx" }; 15 16 // アプリケーションのフルパス 17 var appPath = Assembly.GetExecutingAssembly().Location; 18 if (args.Length != 2) 19 { 20 Console.WriteLine($"use: mono {Path.GetFileName(appPath)} input.csv output.xlsx"); 21 return; 22 } 23 var appDirectory = Path.GetDirectoryName(appPath); 24 25 // テンプレートExcel 26 var templateExcelName = Path.Combine(appDirectory, "template.xlsx"); 27 if (!File.Exists(templateExcelName)) 28 { 29 Console.WriteLine($"ERROR {templateExcelName} not Found."); 30 return; 31 } 32 33 // 入力CSV 34 var inputCsvName = Path.Combine(appDirectory, args[0]); 35 if (!File.Exists(inputCsvName)) 36 { 37 Console.WriteLine($"ERROR {inputCsvName} not Found."); 38 return; 39 } 40 41 // 出力Excel 42 var outputExcelName = Path.Combine(appDirectory, args[1]); 43 var wb = new ExcelPackage(new FileInfo(templateExcelName)); 44 var sheet = wb.Workbook.Worksheets.First(); 45 var lines = File.ReadAllLines(inputCsvName); 46 foreach (var item in lines.Select((line, row) => new { line, row })) 47 { 48 var values = item.line.Split(','); 49 foreach (int i in Enumerable.Range(0, 3)) 50 { 51 // データを差し込むのは7行目のカラム3個目以降(セル番号は、0からではなく1から指定) 52 var cell = sheet.Cells[item.row + 8, i + 4]; 53 if (i == 0) // 品名は、文字として挿入 54 { 55 cell.Value = values[i]; 56 } 57 else 58 { // 数量・単価は、数値として挿入 59 cell.Value = Int32.Parse(values[i]); 60 } 61 } 62 //数式の再計算は必要ありません。 63 wb.SaveAs(new FileInfo(outputExcelName)); 64 } 65 } 66 } 67}

こちらのコードですが、一応現段階としてはEPPlusを用いてExcelファイルにhelloworldと出力が出来ているのでEPPlusは機能していると思われ、推測ですがCSVファイルと取り込むExcelファイルのパス?に原因があるのではないかと考えて試していますが変化が起こらずエラーも出ません。
実行方法は.csファイルをCtrl+F5を押しております。
開発環境はコンソールアプリ(.Net framework)です。
またOSはWindowsです。

C#のファイルの場所が
D:\projectc#\CsvExcel

CSVとExcelのおいてある場所が
D:\document

となっております。

ご教授よろしくお願いします。

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

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

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

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

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

alg

2020/03/26 06:59

どのように実行して、「ファイルが作成もされず変化もエラーも起こりません」になりましたか?質問文への追記をお願いします。 (ビルドしたexeファイルをダブルクリックした、Visual Studioで[F5]で実行した、等)
alg

2020/03/26 07:06 編集

あれ、タグに「ASP.NET」があるということは、ASP.NETプロジェクトとして作成したものを実行した、ということですかね? だとすると、このMainClassのMainメソッドはどうやって実行していますか? (○○というURLにアクセスするとMainClassのMainメソッドが呼ばれる、等)
alg

2020/03/26 07:08

ああ、ASP.NETではなくコンソールアプリですね。了解です。 ではタグの「ASP.NET」を外していただけますか?(紛らわしいので)
kaiserdoragon

2020/03/26 07:10

説明が不十分ですいません。 諸々修正しました!
退会済みユーザー

退会済みユーザー

2020/03/26 07:12

ASP.NET とどういう関係があるのですか? 将来 ASP.NET Web アプリで使う予定ということなのかもしれませんが、現段階ではコンソールアプリで試しているようで ASP.NET と直接の関係はなさそうですが。であれば、ASP.NET のタグは外していただけませんか。 (ASP.NET のタグを見ただけで中身を読まないでスルーする人もいるかも。逆に自分のようにタグにひかれて中身を見て無駄な時間を使ったと思う人もいるかも)
kaiserdoragon

2020/03/26 07:14

先ほど外させてもらいました!お手数おかけします。
guest

回答1

0

ベストアンサー

[Ctrl] + [F5] で実行するのではなく、適当なところにブレークポイントを置いたうえで [F5] のほうがよさそうです。
ステップ実行して、どこにどのような問題があるのかを明らかにするとよいのではないでしょうか。


私の環境では、以下のようにするとExcelファイルが出力されました。

・ご提示のソースの MainClassProgram にして、Main メソッドの先頭に以下を追加した

csharp

1ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

・開始オプションは以下のように D:\document\input.csv D:\document\output.xlsx とした

プロジェクトのプロパティ - デバッグ

・プロジェクトの bin\Debug フォルダに、適当な内容のExcelファイル template.xlsx を置いた
D:\document\input.csv を適当な内容で作成した

投稿2020/03/26 07:24

alg

総合スコア2019

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

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

kaiserdoragon

2020/03/26 09:00 編集

ご回答ありがとうございます!! ちなみに作成が行われた際結構時間かかりましたでしょうか?? それともすぐに作成って行われたでしょうか?? もしすぐに作成されたのであれば多分今失敗している可能性があると思っていまして。。
alg

2020/03/26 09:01

すぐでしたよ。
kaiserdoragon

2020/03/26 09:03

そうですか!ありがとうございます! もう一度チャレンジしてみます!
kaiserdoragon

2020/03/26 11:47

色々試していたら作成できました! 特にコマンドライン引数が重要なカギだったみたいです! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問