Ошибка "не найдена колонка" при переносе данных из Excel - C#
Формулировка задачи:
Приветствую. Появились проблемы при выполнении дипломной работы, при нажатии кнопки "печать" программа отправляет на печать пустой лист, а при нажатии на кнопку "отправить в MS Excel" появляется эта ошибка. Менял значение даже на то которое записано в бд, все равно жалуется. И еще не могу разобраться с кнопкой сохранить изменения в DGV, ошибки не выходят, но и не сохраняет.
Вот код полностью:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; using Excel = Microsoft.Office.Interop.Excel; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: данная строка кода позволяет загрузить данные в таблицу "iSTran12DataSet.ТС". При необходимости она может быть перемещена или удалена. this.тСTableAdapter.Fill(this.iSTran12DataSet.ТС); } private void ExportToExcel() { Excel.Application exApp = new Excel.Application(); exApp.Workbooks.Add(); Worksheet workSheet = (Worksheet)exApp.ActiveSheet; workSheet.Cells[1, 1] = "ID ТС"; workSheet.Cells[1, 2] = "Марка"; workSheet.Cells[1, 3] = "Модель"; workSheet.Cells[1, 4] = "Рег.Номер"; workSheet.Cells[1, 5] = "Гараж.Номер"; workSheet.Cells[1, 6] = "VIN"; workSheet.Cells[1, 7] = "Год Выпуска"; workSheet.Cells[1, 8] = "Модель Двигателя"; workSheet.Cells[1, 9] = "Номер Двигателя"; workSheet.Cells[1, 10] = "Тип ТС"; workSheet.Cells[1, 11] = "Шасси/Рама"; workSheet.Cells[1, 12] = "Номер Кузова"; workSheet.Cells[1, 13] = "Цвет"; workSheet.Cells[1, 14] = "Мощность"; workSheet.Cells[1, 15] = "Объём Двигателя"; workSheet.Cells[1, 16] = "ПТС/ПСМ"; workSheet.Cells[1, 17] = "Собственник"; workSheet.Cells[1, 18] = "Топливо"; workSheet.Cells[1, 19] = "Арендатор"; workSheet.Cells[1, 20] = "Автошины"; workSheet.Cells[1, 21] = "Тип Двигателя"; workSheet.Cells[1, 22] = "Разрешенная мах масса"; workSheet.Cells[1, 23] = "Категория"; workSheet.Cells[1, 24] = "ТО"; workSheet.Cells[1, 25] = "Ремонтные работы"; int rowExcel = 2; //начать со второй строки. for (int i = 0; i < dataGridView1.Rows.Count; i++) { //заполняем строку workSheet.Cells[rowExcel, "A"] = dataGridView1.Rows[i].Cells["ID ТС"].Value; workSheet.Cells[rowExcel, "B"] = dataGridView1.Rows[i].Cells["Марка"].Value; workSheet.Cells[rowExcel, "C"] = dataGridView1.Rows[i].Cells["Модель"].Value; workSheet.Cells[rowExcel, "D"] = dataGridView1.Rows[i].Cells["Рег.Номер"].Value; workSheet.Cells[rowExcel, "E"] = dataGridView1.Rows[i].Cells["Гараж.Номер"].Value; workSheet.Cells[rowExcel, "F"] = dataGridView1.Rows[i].Cells["VIN"].Value; workSheet.Cells[rowExcel, "G"] = dataGridView1.Rows[i].Cells["Год Выпуска"].Value; workSheet.Cells[rowExcel, "H"] = dataGridView1.Rows[i].Cells["Модель Двигателя"].Value; workSheet.Cells[rowExcel, "I"] = dataGridView1.Rows[i].Cells["Номер Двигателя"].Value; workSheet.Cells[rowExcel, "J"] = dataGridView1.Rows[i].Cells["Тип ТС"].Value; workSheet.Cells[rowExcel, "K"] = dataGridView1.Rows[i].Cells["Шасси/Рама"].Value; workSheet.Cells[rowExcel, "L"] = dataGridView1.Rows[i].Cells["Номер Кузова"].Value; workSheet.Cells[rowExcel, "M"] = dataGridView1.Rows[i].Cells["Цвет"].Value; workSheet.Cells[rowExcel, "N"] = dataGridView1.Rows[i].Cells["Мощность"].Value; workSheet.Cells[rowExcel, "O"] = dataGridView1.Rows[i].Cells["Объём Двигателя"].Value; workSheet.Cells[rowExcel, "P"] = dataGridView1.Rows[i].Cells["ПТС/ПСМ"].Value; workSheet.Cells[rowExcel, "Q"] = dataGridView1.Rows[i].Cells["Собственник"].Value; workSheet.Cells[rowExcel, "R"] = dataGridView1.Rows[i].Cells["Топливо"].Value; workSheet.Cells[rowExcel, "S"] = dataGridView1.Rows[i].Cells["Арендатор"].Value; workSheet.Cells[rowExcel, "T"] = dataGridView1.Rows[i].Cells["Автошины"].Value; workSheet.Cells[rowExcel, "U"] = dataGridView1.Rows[i].Cells["Тип Двигателя"].Value; workSheet.Cells[rowExcel, "V"] = dataGridView1.Rows[i].Cells["Разрешенная мах масса"].Value; workSheet.Cells[rowExcel, "W"] = dataGridView1.Rows[i].Cells["Категория"].Value; workSheet.Cells[rowExcel, "X"] = dataGridView1.Rows[i].Cells["ТО"].Value; workSheet.Cells[rowExcel, "Y"] = dataGridView1.Rows[i].Cells["Ремонтные работы"].Value; ++rowExcel; } string pathToXmlFile; pathToXmlFile = Environment.CurrentDirectory + "" + "MyFile.xls"; workSheet.SaveAs(pathToXmlFile); exApp.Quit(); } private void button1_Click(object sender, EventArgs e) { printDocument1.Print(); } private void printDocument_PrintPage(object sender, PrintPageEventArgs e) // Метод печати для printDocument { Bitmap bmp = new Bitmap(dataGridView1.Size.Width + 10, dataGridView1.Size.Height + 10); dataGridView1.DrawToBitmap(bmp, dataGridView1.Bounds); e.Graphics.DrawImage(bmp, 0, 0); } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void button1_Click_1(object sender, EventArgs e) { ExportToExcel(); } } }
Решение задачи: «Ошибка "не найдена колонка" при переносе данных из Excel»
textual
Листинг программы
public void SaveF(DataGridView GRID, string Name) { try { GRID.SelectAll(); Clipboard.SetDataObject(GRID.GetClipboardContent()); Stream myStream; SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "xls files (*.xls)|*.xls|csv files (*.csv)|*.csv"; // saveFileDialog1.Filter = "xls files (*.xls)|*.xls"; saveFileDialog1.FilterIndex = 0; saveFileDialog1.RestoreDirectory = true; saveFileDialog1.FileName = Name; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { // if ((myStream = saveFileDialog1.OpenFile()) != null && saveFileDialog1.FilterIndex == 1 || saveFileDialog1.FilterIndex == 2) if ((myStream = saveFileDialog1.OpenFile()) != null && saveFileDialog1.FilterIndex == 1) { StreamWriter myWriter = new StreamWriter(myStream, System.Text.Encoding.Unicode); myWriter.Write(Clipboard.GetText()); myWriter.WriteLine(); myWriter.Close(); MessageBox.Show("Успешно сохранено"); } GRID.ClearSelection(); if (saveFileDialog1.FilterIndex == 2) { StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.Unicode); int i; sw.Write(GRID.TopLeftHeaderCell.Value); sw.Write(";"); for (i = 0; i < GRID.ColumnCount; i++) { sw.Write(GRID.Columns[i].HeaderCell.Value); if (i < GRID.ColumnCount - 1) { sw.Write(";"); } } sw.Write(sw.NewLine); foreach (DataGridViewRow dr in GRID.Rows) { bool flag = true; for (i = 0; i < GRID.ColumnCount; i++) { if (flag == true) { sw.Write(dr.HeaderCell.Value); sw.Write(";"); flag = false; } sw.Write(dr.Cells[i].Value); if (i < GRID.ColumnCount - 1) { sw.Write(";"); } } sw.Write(sw.NewLine); } sw.Close(); MessageBox.Show("Успешно сохранено"); } } // GRID.ClearSelection(); } catch { MessageBox.Show("Сохранение невозможно (Возможно файл занят другим процессом)");} }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д