salve!
sto cercando di esportare una DataGrdiView in formato Excel.
ho messo su questa classe:
using System;
using System.Windows.Forms;
using System.IO;
using Excel = Microsoft.Office.Interop.Excel;
namespace BancaWindowsForm
{
class DialogSalvaXls
{
public void dialog(DataGridView grid)
{
Excel.Application app = new Excel.Application();
Excel.Workbook wk = app.Workbooks.Add(Type.Missing);
Excel.Worksheet sheet = (Excel.Worksheet)wk.Worksheets.get_Item(1);
sheet.Name = "Entrate";
for (int j = 0; j <= grid.ColumnCount - 1; j++)
{
sheet.Cells[1, j + 1] = grid.Columns[j].HeaderText;
sheet.Columns.AutoFit();
}
for (int i = 0; i <= grid.RowCount - 1; i++)
{
for (int j = 0; j <= grid.ColumnCount - 1; j++)
{
DataGridViewCell cell = grid[j, i];
sheet.Cells[i + 1, j + 1] = cell.Value;
}
}
SaveFileDialog sf = new SaveFileDialog();
sf.Title = "Salva";
sf.Filter = "XLS|*.xls|XLSX|*.xlsx|Tutti i file|*.*";
sf.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
sf.ShowDialog();
if (sf.FileName != "")
{
try
{
wk.SaveAs(sf.OpenFile(), Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wk.Close();
app.Quit();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
}
il problema è questo:
-avvio il programma che carica la gridview senza problemi
-avvio l'evento che mi richiama questa classe
-imposto percorso e nome e a quel punto mi dice che già esiste un file con quel nome ed inoltre il file xls è corrotto e vuoto
dove sto sbagliando?