Ошибка при сохранении dataGridView в Excel файл. - C#
Формулировка задачи:
Хочу сохранить датугридвью в эксель файл. Выдает следующую ошибку. Может я забыл подгрузить какую-нибудь библиотеку?
Да, и еще. На ноуте стоял 2007 офис, я его коряво снес, поставил привычный для себя 2003. При каждом запуске офиса выдается следующее:
нет, конечно, офис работает. но вот всегда такие сообщеньки. что сделать? снести 2003 и установить 2007?
private void сохранитьРезультатыToolStripMenuItem_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application XlApp;
saveFileDialog1.Filter = "Excel (*.xls)|*.xls";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
XlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook XlWorkbook;
XlWorkbook = XlApp.Workbooks.Add(System.Reflection.Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet XlWorksheet;
XlWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)XlWorkbook.Worksheets.get_Item(1);
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
XlApp.Cells[i + 1, j + 1] = dataGridView1.Rows[i].Cells[j].Value;
}
}
//сохранение в книгу
XlWorkbook.SaveAs(saveFileDialog1.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,
"", "", false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, false,
false, false, false);
XlWorkbook.Close(true, saveFileDialog1.FileName, false);
XlApp.Quit();
MessageBox.Show("Файл сохранён!!!", "Информация о файле", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}Решение задачи: «Ошибка при сохранении dataGridView в Excel файл.»
textual
Листинг программы
private void save(object sender, EventArgs e)
{
// диалоговое окно
var save = new SaveFileDialog
{
AddExtension = true,
DefaultExt = "bin",
Filter = @"Текстовые файлы (*.txt)|*.txt|CSV-файл (*.csv)|*.csv|Bin-файл (*.bin)|*.bin",
FilterIndex = 2,
RestoreDirectory = true
};
if (save.ShowDialog() != DialogResult.OK) return;
var sw = new StreamWriter(save.FileName, true,Encoding.UTF8);
foreach (DataGridViewRow row in dataGridView1.Rows) //запись
if (!row.IsNewRow)
{
var first = true;
foreach (DataGridViewCell cell in row.Cells)
{
if (!first) sw.Write(";");
sw.Write(cell.Value.ToString());
first = false;
}
sw.WriteLine();
}
sw.Close();
}