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

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

新規登録して質問してみよう
ただいま回答率
87.20%
C#

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

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

解決済

C#でのClosedxmlを使用した、テーブルのエクセル出力

saitaka0418
saitaka0418

総合スコア0

C#

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

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

2回答

0評価

2クリップ

9009閲覧

投稿2016/04/13 04:58

###前提・実現したいこと
ASP.Net、C#で、データベースのテーブルをそのままエクセル出力する機能を開発しております。
エクセルファイルの操作については、Closedxmlを使用しており、データベースから読み込んだテーブルをDataTable型にセット・読込を行い、エクセルファイルで保存しています。

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

入力文字列の形式が正しくありません。 文字列をDateTimeに変換するときに、DateTimeオブジェクトに各変数を指定する前に日付を取得する文字列を解析します。 ・・・

###該当のソースコード

/// <summary> /// Excelブックを新規に作成してデータテーブルの内容を出力します /// </summary> /// <param name="dt">DataTable</param> /// <param name="path">書き込み先のディレクトリパス</param> /// <param name="name">ファイル名称</param> /// <param name="header">ヘッダー指定</param> public static void DataTableToExcel2\(System\.Data\.DataTable dt, string path, string name, Array header\) { try { // ブックを作成 var workbook = new XLWorkbook\(\); //シート作成 var ws = workbook\.Worksheets\.Add\(dt, "Sheet"\); var rgn = ws\.Range\(1, ws\.FirstColumnUsed\(\)\.ColumnNumber\(\), ws\.LastRowUsed\(\)\.RowNumber\(\), ws\.LastColumnUsed\(\)\.ColumnNumber\(\)\); rgn\.Style\.Font\.FontSize = 10; rgn\.Style\.Font\.FontName = "メイリオ"; rgn\.Style\.NumberFormat\.SetFormat\("@"\); ws\.Cell\("A1"\)\.InsertData\(new\[\] { header }\); //全部の列の幅を自動調整 ws\.Columns\(\)\.AdjustToContents\(\); //保存 var tmp = Path\.Combine\(path, name\); workbook\.SaveAs\(tmp\); } catch \(Exception ex\) { Console\.Write\(name \+ "を作成できませんでした。"\); Console\.Write\(ex\.Message\); } }

###試したこと
テーブルにDateTime型のフィールドがあるので、セルの書式設定を文字列にしてみましたが、だめでした。
単純にDateTime型に入っている値を文字列としてエクセルに出力できればいいと思ってます。
DateTime型のないテーブルであれば、正常に処理は完了してます。

###補足情報(言語/FW/ツール等のバージョンなど)
ASP.Net、C#、ClosedXML

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。