Ошибка "не найдена колонка" при переносе данных из 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("Сохранение невозможно (Возможно файл занят другим процессом)");}
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д