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