Como abrir um arquivo Excel em C#?

estou a tentar converter algum código VBA para C#. Sou novo em C#. Atualmente estou tentando abrir um arquivo Excel a partir de uma pasta e se ele não existe, em seguida, criá-lo. Estou a tentar algo como o seguinte. Como posso fazê-lo funcionar?

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();
Author: abatishchev, 2009-01-21

12 answers

Você precisa ter instalado ferramentas Microsoft Visual Studio para Escritório.

Depois disso, criar um projecto comum. NET e adicionar a referência ao objecto COM Microsoft.Office.Interop.Excel.dll através de ' Adicionar Referência..' dialogo.

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

Missing.Value é uma estrutura de reflexão especial para a substituição desnecessária de parâmetros

 67
Author: abatishchev, 2013-06-19 20:36:44
FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
    System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
    //file doesn't exist
}
 31
Author: Mennano, 2014-06-04 18:39:32
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);
  }
}
 7
Author: Flane, 2014-01-28 18:04:13

Abrir o ficheiro Excel

System.Diagnostics.Process.Start(@"c:\document.xls");
 7
Author: user3167575, 2017-09-17 13:49:25

Devias abrir assim

        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);

Fonte : http://csharp.net-informations.com/excel/csharp-open-excel.htm

Ruden

 3
Author: rudenaggar, 2013-04-17 06:23:41

Importações

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

Aqui está o código para abrir uma folha do excel usando 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();

Aqui está um vídeo mate sobre como abrir uma planilha do excel usando C# https://www.youtube.com/watch?v=O5Dnv0tfGv4

 3
Author: user1848210, 2016-08-20 03:04:09

Para abrir um ficheiro, tente isto:

objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls",
    missing, missing, missing, missing, missing, missing, missing,
    missing, missing, missing, missing, missing,missing, missing);
Tens de apresentar esses argumentos idiotas de "falta". Se você estivesse escrevendo o mesmo código em VB.Net não terias precisado deles, mas não os podes evitar Em C#.
 2
Author: Frederick The Fool, 2009-01-21 11:39:27
É mais fácil ajudar-te se também disseres o que se passa, ou o que falha quando o Geres. Mas, de repente, confundiste algumas coisas. O seguinte não funciona por causa de alguns problemas.
if (Directory("C:\\csharp\\error report1.xls") = "")

O que você está tentando fazer é criar um novo objeto de diretório que deve apontar para um arquivo e, em seguida, verificar se houve algum erro.

O que você está realmente a fazer é tentar chamar uma função chamada Directory () e depois atribuir um texto para resultado. Isso não vai funcionar Desde 1 / Você não tem uma função chamada diretório (string str) e você não pode atribuir ao resultado de uma função (você só pode atribuir um valor a uma variável).

O que deve fazer (pelo menos para esta linha) é o seguinte

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

Quanto à razão pela qual o código Excel não funciona, você tem que verificar a documentação para a Biblioteca Excel que o google deve ser capaz de fornecer para você.

 2
Author: Mats Fredriksson, 2009-01-21 14:57:21
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
Author: Jairaj, 2011-11-12 04:41:46

Isto é uma aplicação comercial ou algum software de hobby / código aberto?

Estou a perguntar isto porque, pela minha experiência, Todas as alternativas de manipulação do Excel free. Net têm problemas graves, por diferentes razões. Para coisas de hobbyist, eu geralmente acaba portando jExcelApi de Java para C# e usá-lo.

Mas se isto é uma aplicação comercial, estarias melhor se comprasses uma biblioteca de terceiros, como Aspose.Células. Acredita em mim, diz-se como se diz. poupa muito tempo e o tempo não é de graça.

 1
Author: Tamas Czinege, 2009-01-21 15:29:42

Código :

 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
Author: Gaurav Bari, 2015-01-12 07:53:34

Para editar ficheiros Excel dentro de uma aplicação C#, comecei recentemente a usar NPOI . Estou muito satisfeito com isso.

 1
Author: bvgheluwe, 2017-06-12 12:15:02