実行時に列の入れ替えを可能にするために、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(); } } コード
回答1件
あなたの回答
tips
プレビュー