prosource

C#에서 Excel 파일을 여는 방법은 무엇입니까?

probook 2023. 5. 8. 22:19
반응형

C#에서 Excel 파일을 여는 방법은 무엇입니까?

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

Microsoft VSTO(Visual Studio Tools for Office)를 설치해야 합니다.

VSTO는 Visual Studio 설치 관리자의 Workloads > Web & Cloud > Office/SharePoint Development에서 선택할 수 있습니다.

그런 다음 제네릭을 생성합니다.NET 프로젝트 및 참조 추가Microsoft.Office.Interop.Excel'참조 추가...> 어셈블리' 대화 상자.

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

Missing.Value불필요한 파라미터 교체를 위한 특수 반사 구조입니다.


최신 버전에서는 필요한 어셈블리 참조를 다음과 같이 부릅니다.Microsoft Excel 16.0 Object Library최신 버전이 설치되어 있지 않은 경우 설치되어 있을 수 있습니다.Microsoft Excel 15.0 Object Library또는 이전 버전이지만 포함하는 것과 동일한 프로세스입니다.

여기에 이미지 설명 입력

FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
    System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
    //file doesn't exist
}
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);
  }
}

수입품

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

다음은 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();

다음은 C# https://www.youtube.com/watch?v=O5Dnv0tfGv4 을 사용하여 Excel 워크시트를 여는 방법에 대한 비디오 메이트입니다.

파일을 열려면 다음을 수행합니다.

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

당신은 그 바보같이 보이는 '누락' 주장들을 제공해야 합니다.만약 당신이 VB로 같은 코드를 작성하고 있습니다.네트 당신은 그것들이 필요하지 않았을 것이지만, 당신은 C#에서 그것들을 피할 수 없습니다.

당신은 이렇게 열어야 합니다.

        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

무례한

무엇이 잘못되었는지, 또는 무엇이 실패했는지를 실행할 때도 말할 수 있다면 더 쉽게 도와줄 수 있습니다.

하지만 한눈에 봐도 당신은 몇 가지를 혼동하고 있습니다.

다음은 몇 가지 문제로 인해 작동하지 않습니다.

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

파일을 가리킨 다음 오류가 있는지 확인해야 하는 새 디렉토리 오브젝트를 만드는 것입니다.

실제로 하고 있는 것은 디렉터리()라는 함수를 호출한 다음 결과에 문자열을 할당하는 것입니다.1/ 디렉터리(string str)라는 함수가 없고 함수의 결과에 할당할 수 없기 때문에 이것은 작동하지 않습니다(변수에만 값을 할당할 수 있습니다).

적어도 이 라인에 대해 수행해야 하는 작업은 다음과 같습니다.

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

엑셀 코드가 작동하지 않는 이유는 구글이 제공할 수 있는 엑셀 라이브러리 문서를 확인해야 합니다.

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

이것은 상업적인 애플리케이션입니까, 아니면 취미가 있는/오픈 소스 소프트웨어입니까?

제 경험상 모든 것이 무료이기 때문에 이것을 물어보는 것입니다.NET Excel 처리 대안에는 여러 가지 이유로 심각한 문제가 있습니다.취미가 있는 것들을 위해, 저는 보통 자바에서 C#로 jExcelApi를 이식하고 사용하게 됩니다.

하지만 이것이 상업적인 애플리케이션이라면, Aspose와 같은 타사 라이브러리를 구매하는 것이 더 나을 것입니다.. 저를 믿으세요. 셀은 많은 시간과 시간을 절약할 수 있기 때문에 완전히 가치가 있습니다.

코드:

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

C# 애플리케이션 내에서 Excel 파일을 편집하기 위해 최근 NPOI를 사용하기 시작했습니다.저는 그것에 매우 만족합니다.

언급URL : https://stackoverflow.com/questions/464902/how-to-open-an-excel-file-in-c

반응형