268 messaggi dal 25 novembre 2010
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?
268 messaggi dal 25 novembre 2010
ho risolto il problema:
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 = null;
            //app.Visible = true;
            sheet = wk.Sheets[1];
            sheet = wk.ActiveSheet;
            sheet.Name = "Entrate";

            for (int i = 1; i < grid.ColumnCount; i++)
            {
                sheet.Cells[1, i] = grid.Columns[i - 1].HeaderText;
            }

            for (int i = 0; i < grid.Rows.Count - 1; i++)
            {
                for (int j = 0; j < grid.Columns.Count - 1; j++)
                {
                    sheet.Cells[i + 2, j + 1] = grid.Rows[i].Cells[j].Value.ToString();
                }
            }
            sheet.Columns.AutoFit();

            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);
            if (sf.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    wk.SaveAs(sf.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                    wk.Close();
                    app.Quit();
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
        }
    }
}

adesso ogni volta che provo ad aprire il file mi compare sempre questo avviso:
Il formato che si sta cercando di aprire è diverso da quello specificato dall'estensione del file......

se clicco su SI il file si apre e vede correttamente, ma ho sempre sta rottura di avviso.
che ne pensate?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC