如何使用类库(.NET Framework)在C#中创建Excel文件?

时间:2019-01-23 14:58:40

标签: c# excel

这是我第一次来这里,我对c#不太熟悉。 因此,为了练习,我想为UiPath创建一个自定义活动,因此我使用类库(.NET Framework),我的自定义操作基于创建一个工作簿excel并将其保存。

我尝试了但没用,我真的不知道该怎么办。

该文件是通用文件,我在其中添加:

public InArgument<string> NameFile { get; set; }
public InArgument<string> PathWorkbookInput { get; set; }

我需要一个简单的文件,供消费者决定名称和路径。

2 个答案:

答案 0 :(得分:0)

首先,我不得不提一下,如果这是您第一次尝试使用c#,那么开始使用类库并不是一个好选择,因为您将无法单独运行该类,并且需要一个.exe。调用类库.dll文件的文件。 尝试从Windows窗体应用程序甚至WPF窗体开始

第二秒,您的数据存储在应用程序中的什么位置? SQL数据库?数组?一个列表?或字典?

第三,为了让用户选择要存储的Excel文件的名称和位置,您将需要创建“ FileSaveDialoge”的实例以从用户那里获取路径和文件名,然后您就可以执行任何操作您想要的路径

尝试使用

  

“ Microsoft Office Interop Excel” NuGet程序包

,并使用以下代码段使用此软件包:

public void CreateExcel()
{

Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
            // creating new WorkBook within Excel application  
            Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
            // creating new Excelsheet in workbook  
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
            // see the excel sheet behind the program  
            app.Visible = true;
            // get the reference of first sheet. By default its name is Sheet1.  
            // store its reference to worksheet  
            worksheet = workbook.Sheets["Sheet1"];
            worksheet = workbook.ActiveSheet;
            // changing the name of active sheet  
            worksheet.Name = "new sheet name";

            // storing Each row and column value to excel sheet  //for example from a grid view
            for (int i = 0; i < GridView.Rows.Count - 1; i++)
            {
                for (int j = 0; j < GridView.Columns.Count; j++)
                {
                    worksheet.Cells[i + 2, j + 1] = GridView.Rows[i].Cells[j].Value.ToString();
                }
            }
            // save the application  
            string path;
            SelectSavePath.ShowDialog();
            path = SelectSavePath.SelectedPath;
            if(path!=string.Empty)
            workbook.SaveAs(path+FileName+".xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            // Exit from the application  
            app.Quit();
}

答案 1 :(得分:0)

谢谢您的回答,这就是我要做的 我的数据存储在数组

谢谢

公共类WriteExecutiveSummary:CodeActivity {

SAVE OUTFILE ='Newdata.sav' /KEEP !varlist.
 public class WriteExecutiveSummary : CodeActivity 
    {  
        [Category("Input")]
        [RequiredArgument]
        public InArgument<string[]> Header { get; set; }

        [Category("Input")]
        [RequiredArgument]
        public InArgument<string> PathWorkbookInput { get; set; }

        [Category("Input")]
        [RequiredArgument]
        public InArgument<string> NomeFile { get; set; }

        [Category ("Input")]
        [RequiredArgument]
        public InArgument<string> NomeSheet { get; set; }

        [Category("Output")]
        public OutArgument<string> Output { get; set; }

        protected override void Execute(CodeActivityContext context)
        {
            Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Excel.Workbook Nuovo = xlApp.Workbooks.Add();
            Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(PathWorkbookInput.Get(context));

            var nomeFile  = NomeFile.Get(context);
            var nomeSheet = NomeSheet.Get(context);

            Nuovo.SaveAs(System.IO.Directory.GetCurrentDirectory() + "\\" + NomeFile + NomeSheet, Excel.XlFileFormat.xlOpenXMLWorkbook);

}