web-dev-qa-db-fra.com

Comment ouvrir un fichier Excel en C #?

J'essaie de convertir du code VBA en C #. Je suis nouveau en C #. J'essaie actuellement d'ouvrir un fichier Excel à partir d'un dossier. S'il n'existe pas, créez-le. J'essaie quelque chose comme ce qui suit. Comment puis-je le faire fonctionner?

Excel.Application objexcel;
Excel.Workbook wbexcel;
bool wbexists;
Excel.Worksheet objsht;
Excel.Range objrange;

objexcel = new Excel.Application();
if (Directory("C:\\csharp\\error report1.xls") = "")
{
    wbexcel.NewSheet();
}

else
{
    wbexcel.Open("C:\\csharp\\error report1.xls");
    objsht = ("sheet1");
}
objsht.Activate();
60
tksy

Vous devez avoir installé Microsoft Visual Studio Tools pour Office (VSTO).

VSTO peut être sélectionné dans le programme d'installation de Visual Studio sous Workloads> Web et Cloud> Développement Office/SharePoint.

Après cela, créez un projet .NET commun et ajoutez la référence à Microsoft.Office.Interop.Excel via la boîte de dialogue 'Ajouter une référence ...> Assemblées'.

Application Excel = new Application();
Workbook wb = Excel.Workbooks.Open(path);

Missing.Value est une structure de réflexion spéciale pour le remplacement inutile de paramètres


Dans les versions plus récentes, la référence Assembly requise est appelée Microsoft Excel 16.0 Object Library. Si vous ne disposez pas de la dernière version, vous pouvez avoir Microsoft Excel 15.0 Object Library, ou une version plus ancienne, mais il s’agit du même processus à inclure.

enter image description here

74
abatishchev
FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
    System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
    //file doesn't exist
}
37
Mennano
private void btnChoose2_Click(object sender, EventArgs e)
{
  OpenFileDialog openfileDialog1 = new OpenFileDialog();
  if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  {
    this.btnChoose2.Text = openfileDialog1.FileName;
    String filename = DialogResult.ToString();

    var excelApp = new Excel.Application();
    excelApp.Visible = true;
    excelApp.Workbooks.Open(btnChoose2.Text);
  }
}
8
Flane

ouvrir le fichier Excel

System.Diagnostics.Process.Start(@"c:\document.xls");
8
user3167575

Importations

 using Excel= Microsoft.Office.Interop.Excel;
 using Microsoft.VisualStudio.Tools.Applications.Runtime;

Voici le code pour ouvrir une feuille Excel en utilisant C #.

    Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();
    Microsoft.Office.Interop.Excel.Workbook wbv = Excel.Workbooks.Open("C:\\YourExcelSheet.xlsx");
    Microsoft.Office.Interop.Excel.Worksheet wx = Excel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;

    wbv.Close(true, Type.Missing, Type.Missing);
    Excel.Quit();

Voici une vidéo expliquant comment ouvrir une feuille de calcul Excel à l'aide de C # https://www.youtube.com/watch?v=O5Dnv0tfGv4

3
user1848210

tu devrais ouvrir comme ça

        Excel.Application xlApp ;
        Excel.Workbook xlWorkBook ;
        Excel.Worksheet xlWorkSheet ;
        object misValue = System.Reflection.Missing.Value;

        xlApp = new Excel.ApplicationClass();
        xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

source: http://csharp.net-informations.com/Excel/csharp-open-Excel.htm

ruden

3
rudenaggar

Pour ouvrir un fichier, essayez ceci:

objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls",
    missing, missing, missing, missing, missing, missing, missing,
    missing, missing, missing, missing, missing,missing, missing);

Vous devez fournir ces arguments stupides "manquants". Si vous écriviez le même code dans VB.Net, vous n'en auriez pas eu besoin, mais vous ne pouvez pas les éviter en C #.

2
Frederick The Fool

Il est plus facile de vous aider si vous dites également ce qui ne va pas ou ce qui échoue lorsque vous l'exécutez.

Mais d'un coup d'œil, vous avez confondu plusieurs choses.

Ce qui suit ne fonctionne pas à cause de quelques problèmes.

if (Directory("C:\\csharp\\error report1.xls") = "")

Ce que vous essayez de faire, c'est créer un nouvel objet Annuaire qui doit pointer sur un fichier, puis vérifier s'il y a des erreurs.

Ce que vous êtes en train de faire, c'est d'appeler une fonction nommée Directory (), puis d'attribuer une chaîne au résultat. Cela ne fonctionnera pas car 1/vous n'avez pas de fonction nommée Répertoire (string str) et vous ne pouvez pas affecter le résultat à partir d'une fonction (vous ne pouvez affecter qu'une valeur à une variable).

Ce que vous devez faire (pour cette ligne au moins) est le suivant

FileInfo fi = new FileInfo("C:\\csharp\\error report1.xls");
if(!fi.Exists)
{
    // Create the xl file here
}
else
{
    // Open file here
}

Pour savoir pourquoi le code Excel ne fonctionne pas, vous devez consulter la documentation de la bibliothèque Excel que Google devrait pouvoir vous fournir.

2
Mats Fredriksson
Microsoft.Office.Interop.Excel.Application excapp;

excapp = new Microsoft.Office.Interop.Excel.Application();

object misval=System.Reflection.Missing.Value;

Workbook wrkbuk = new Workbook();

Worksheet wrksht = new Worksheet();

wrkbuk = excapp.Workbooks._Open(@"C:\Users\...\..._template_v1.0.xlsx", misval, misval, 
misval, misval, misval, misval, misval, misval, misval, misval, misval, misval);

wrksht = (Microsoft.Office.Interop.Excel.Worksheet)wrkbuk.Worksheets.get_Item(2);
2
Jairaj

Est-ce une application commerciale ou un logiciel amateur/open source?

Je pose la question parce que, selon mon expérience, toutes les solutions de traitement gratuites .NET Excel posent de graves problèmes, pour différentes raisons. Pour les choses d'amateur, je finis généralement par porter jExcelApi de Java vers C # et l'utiliser.

Mais s'il s'agit d'une application commerciale, vous feriez mieux d'acheter une bibliothèque tierce, telle que Aspose.Cells . Croyez-moi, cela en vaut vraiment la peine, car cela fait économiser beaucoup de temps et que le temps n'est pas gratuit.

1
Tamas Czinege

Code:

 private void button1_Click(object sender, EventArgs e)
     {

        textBox1.Enabled=false;

            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Excell File |*.xlsx;*,xlsx";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                string extn = Path.GetExtension(ofd.FileName);
                if (extn.Equals(".xls") || extn.Equals(".xlsx"))
                {
                    filename = ofd.FileName;

                    if (filename != "")
                    {
                        try
                        {
                            string excelfilename = Path.GetFileName(filename);


                        }
                        catch (Exception ew)
                        {
                            MessageBox.Show("Errror:" + ew.ToString());
                        }
                    }
                }
            }
1
Gaurav Bari

Pour éditer des fichiers Excel à partir d’une application C #, j’ai récemment commencé à utiliser NPOI . J'en suis très satisfait.

1
bvgheluwe