Как открыть файл Excel в C #? - PullRequest
       98

Как открыть файл Excel в C #?

58 голосов
/ 21 января 2009

Я пытаюсь преобразовать код VBA в C #. Я новичок в C #. В настоящее время я пытаюсь открыть файл Excel из папки, и если он не существует, то создайте его. Я пытаюсь что-то вроде следующего. Как я могу заставить это работать?

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

Ответы [ 12 ]

72 голосов
/ 21 января 2009

Вам необходимо установить Microsoft Visual Studio Tools для Office (VSTO).

VSTO можно выбрать в установщике Visual Studio в разделе «Рабочие нагрузки»> «Интернет и облако»> «Разработка Office / SharePoint».

После этого создайте общий проект .NET и добавьте ссылку на Microsoft.Office.Interop.Excel через диалоговое окно «Добавить ссылку ...> Сборки».

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

Missing.Value - это специальная структура отражения для замены ненужных параметров

36 голосов
/ 19 октября 2011
FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
    System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
    //file doesn't exist
}
8 голосов
/ 22 августа 2016

открыть файл Excel

System.Diagnostics.Process.Start(@"c:\document.xls");
7 голосов
/ 28 января 2014
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);
  }
}
3 голосов
/ 20 августа 2016

Импорт

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

Вот код для открытия листа Excel с использованием 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();

Вот видео о том, как открыть лист Excel с помощью C # https://www.youtube.com/watch?v=O5Dnv0tfGv4

3 голосов
/ 17 апреля 2013

вы должны открыть как это

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

источник: http://csharp.net -informations.com / excel / csharp-open-excel.htm

Ruden

2 голосов
/ 15 июля 2011
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 голосов
/ 21 января 2009

Вам легче помочь, если вы скажете, что также не так, или что не получается при запуске.

Но с первого взгляда вы перепутали несколько вещей.

Следующее не работает из-за нескольких проблем.

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

То, что вы пытаетесь сделать, - это создать новый объект Каталога, который должен указать на файл, а затем проверить, не было ли ошибок.

Что вы на самом деле делаете, так это пытаетесь вызвать функцию с именем Directory () и затем присвоить строку результату. Это не будет работать, поскольку 1 / у вас нет функции с именем Directory (строка str), и вы не можете назначить результат из функции (вы можете только присвоить значение переменной).

Что вы должны сделать (по крайней мере, для этой строки):

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

Что касается того, почему код Excel не работает, вы должны проверить документацию для библиотеки Excel, которую Google должен предоставить для вас.

2 голосов
/ 21 января 2009

Для открытия файла попробуйте следующее:

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

Вы должны предоставить эти глупо выглядящие «отсутствующие» аргументы. Если бы вы писали один и тот же код в VB.Net, они бы вам не понадобились, но вы не можете избежать их в C #.

1 голос
/ 12 января 2015

Код:

 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());
                        }
                    }
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...