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

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

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

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

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

C#

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

解決済

1回答

1322閲覧

実行時に列を動かしたdatagridviewをcsv出力しても列が変更されない理由

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

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

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

C#

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

0グッド

0クリップ

投稿2020/08/30 10:15

編集2020/08/30 10:42

実行時に列の入れ替えを可能にするために、AllowUserToOrderColumns プロパティを true にしたのですが、出力する時に入れ替えたはずの列が入れ替わらないのですが、AllowUserToOrderColumnsですが、見た目が変わっているだけでデータの順番は変わっていないということなんでしょうか?

読み込み

private DataTable Read(string filepath) { DataTable dataTable = new DataTable(); string[] lines = File.ReadAllLines(filepath, Encoding.GetEncoding("Shift_JIS")); if (lines.Length > 0) { string firstline = lines[0]; string[] strHeader = firstline.Split(','); foreach (string strWorld in strHeader) { //dataGridView1.Columns.Clear(); dataTable.Columns.Add(new DataColumn(strWorld)); } for (int row = 1; row < lines.Length; row++) { string[] word = lines[row].Split(','); DataRow dataRow = dataTable.NewRow(); int columindex = 0; foreach (string strWorld in strHeader) { dataRow[strWorld] = word[columindex++]; } dataTable.Rows.Add(dataRow); } } //if (dataTable.Rows.Count > 0) //{ // dataGridView1.DataSource = dataTable; //} return dataTable; } private void button1_Click(object sender, EventArgs e) { dataGridView1.Columns.Clear(); dataGridView1.AutoGenerateColumns = true; bindingSource1.DataSource = Read("TextFile1.txt") } コード

出力

private void OutputExcel(string path) { ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial; using (var excel = new ExcelPackage(new FileInfo(path))) { var sheet = excel.Workbook.Worksheets.Add("シート名"); sheet.Cells["A1"].Value = "タイトル"; var a = new ExcelCellAddress("A3"); for (int c = 0; c < dataGridView1.ColumnCount; c++) { sheet.Cells[a.Row, a.Column + c].Value = dataGridView1.Columns[c].HeaderCell.FormattedValue; } for (int r = 0; r < dataGridView1.RowCount; r++) { for (int c = 0; c < dataGridView1.ColumnCount; c++) { sheet.Cells[a.Row + 1 + r, a.Column + c].Value = dataGridView1[c, r].Value; } } excel.Save(); } } コード

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

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

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

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

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

YAmaGNZ

2020/08/30 10:24

どのようにDataGridViewに表示していて、どのようにCSVに出力しているのでしょうか?
guest

回答1

0

ベストアンサー

列の見た目の順番は DataGridViewColumn.DisplayIndex で保持されています。

  • DataGridViewColumn.DisplayIndex プロパティ

https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.datagridviewcolumn.displayindex?view=netcore-3.1

その為、こんな感じにするとうまくいくんじゃないでしょうか。

C#

1for (int c = 0; c < dataGridView1.ColumnCount; c++) { 2 sheet.Cells[a.Row, a.Column + dataGridView1.Columns[c].DisplayIndex].Value = 3 dataGridView1.Columns[c].HeaderCell.FormattedValue; 4}

投稿2020/08/30 11:06

draq

総合スコア2573

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

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

退会済みユーザー

退会済みユーザー

2020/08/30 11:49

動作できました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問