Comment puis-je enregistrer un fichier Excel sans l'obtention d'un format d'avertissement lors de l'ouverture, à l'aide de C# et Excel 2010

Je suis à l'aide d'Excel 2010.
J'essaie donc d'enregistrer mon fichier excel, avec ce code.
Il permet de gagner un .fichier xls, mais quand j'ai ouvert le fichier, j'obtiens ce message:

Le fichier que vous essayez d'ouvrir, 'tre.xls' est dans un format différent de celui spécifié par l'extension de fichier. Vérifiez que le fichier n'est pas corrompu et est d'une charriés source avant de l'ouverture du fichier. Voulez-vous ouvrir le fichier maintenant?

Si je presse yesle fichier s'ouvre. Mais de quoi ai-je besoin pour se débarrasser de ce format-popup?

Mon code:

using System;
using System.Windows.Forms;
using ExcelAddIn1.Classes;
using ExcelAddIn1.Classes.Config;
using Microsoft.Office.Interop.Excel;
using Application = Microsoft.Office.Interop.Excel.Application;
using System.Runtime.InteropServices;


private void Foo(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
    saveFileDialog.FilterIndex = 0;
    saveFileDialog.RestoreDirectory = true;
    saveFileDialog.CreatePrompt = true;
    saveFileDialog.FileName = null;
    saveFileDialog.Title = "Save path of the file to be exported";

    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        //Save. 
        //The selected path can be got with saveFileDialog.FileName.ToString()
        Application excelObj = 
            (Application)Marshal.GetActiveObject("Excel.Application");
        Workbook wbook = excelObj.ActiveWorkbook;
        wbook.SaveAs(saveFileDialog.FileName, XlFileFormat.xlWorkbookDefault, 
            Type.Missing, Type.Missing, false, false, 
            XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, 
            Type.Missing, Type.Missing, Type.Missing);
        wbook.Close();
    }
}

Quand je l'ai enregistrer dans excel normalement je reçois "Book1.xlsx", qui n'ont pas de problème pour l'ouvrir.

============= LA SOLUTION FINALE ============

private void Foo(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    saveFileDialog.Filter = "Execl files (*.xls)|*.xls";

    saveFileDialog.FilterIndex = 0;
    saveFileDialog.RestoreDirectory = true;
    saveFileDialog.CreatePrompt = true;
    saveFileDialog.FileName = null;
    saveFileDialog.Title = "Save path of the file to be exported";

    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        Application excelObj = (Application)Marshal.GetActiveObject("Excel.Application");
        Activate(); //<-- added (recommend by msdn, but maybe not nessary here)
        Workbook wbook = excelObj.ActiveWorkbook;
        wbook.SaveAs(saveFileDialog.FileName, XlFileFormat.xlExcel8, Type.Missing,
            Type.Missing, false, false, XlSaveAsAccessMode.xlNoChange, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        //               wbook.Close(); //<-- don't want this anymore
    }
}
Pourquoi n'utilisez-vous pas la .format xlsx. Edit: Ok je crois que je vois maintenant. Vous êtes en les forçant à s'enregistrer avec un .extension xls, mais vous êtes en l'enregistrant dans le .format xlsx. Je vous suggère de changer votre enregistrer un filtre *.xlsx
J'ai essayé avec .xlsx format de combiner avec un flux plus tôt (au lieu de l'enregistrer avec le wbook) mais alors je pouvais pas ouvrir le fichier. Je vais essayer saveFileDialog.Filtre = "Execl fichiers (.xlsx)|.xlsx"; combiné le wbook.SaveAs() solution maintenant.

OriginalL'auteur radbyx | 2012-05-08