如何以编程方式从模板excel表创建Excel工作表?

时间:2021-12-15 21:22:22

I am creating a excel sheet from tempalte excel sheet.

我正在从tempalte excel表创建一个excel表。

I have a code

我有一个代码

  try
    {
        FileInfo newFile = new FileInfo(@"D:\ExcelFromTemplate.xlsx");
        FileInfo template = new FileInfo(@"D:\template.xlsx");

        using (ExcelPackage xlPackage = new ExcelPackage(newFile,template))
        {

            ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Sheet1"];

            ExcelCell cell = worksheet.Cell(5,1);
            cell.Value = "15";

            //worksheet.Cell(5, 1).Value = "Soap";

            //xlPackage.Save();
            Response.Write("Excel file created successfully");
        }

    }
    catch (Exception ex)
    {
        Response.WriteFile(ex.InnerException.ToString());
    }  

this code creates the new excel file same as the template excel file but could not add the cell value. Why?

此代码创建与模板excel文件相同的新excel文件,但无法添加单元格值。为什么?

I had tried it with 2 ways as in above code for cell(5,1). But the excel sheet creates without writting cell value. How we can add it.

我已经尝试了两种方法,如上面的单元格代码(5,1)。但excel表创建时没有写入单元格值。我们如何添加它。

Regards, Girish

问候,Girish

1 个解决方案

#1


2  

You need to save the file to persist the changes made. Using save()

您需要保存文件以保留所做的更改。使用save()

  try
        {
            FileInfo newFile = new FileInfo(@"D:\ExcelFromTemplate.xlsx");
            FileInfo template = new FileInfo(@"C:\Example.xlsx");

            using (ExcelPackage xlPackage = new ExcelPackage(newFile , template))
            {

               //Added This part
               foreach (ExcelWorksheet aworksheet in xlPackage.Workbook.Worksheets)
                {
                    aworksheet.Cell(1, 1).Value = aworksheet.Cell(1, 1).Value;
                }

                ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["My Data"];

                ExcelCell cell = worksheet.Cell(5, 1);
                cell.Value = "15";

                //worksheet.Cell(5, 1).Value = "Soap";

                xlPackage.Save( );
                //Response.Write("Excel file created successfully");
            }

        }
        catch (Exception ex)
        {
            //Response.WriteFile(ex.InnerException.ToString());
        }

Got the issue. The problem is inherent to ExcelPackage. For the same you have to open each sheet and do some changes for it to get saved.

得到了这个问题。这个问题是ExcelPackage固有的。同样,您必须打开每个工作表并对其进行一些更改才能保存。

Search the forum for more explanation.

搜索论坛以获取更多解释。

#1


2  

You need to save the file to persist the changes made. Using save()

您需要保存文件以保留所做的更改。使用save()

  try
        {
            FileInfo newFile = new FileInfo(@"D:\ExcelFromTemplate.xlsx");
            FileInfo template = new FileInfo(@"C:\Example.xlsx");

            using (ExcelPackage xlPackage = new ExcelPackage(newFile , template))
            {

               //Added This part
               foreach (ExcelWorksheet aworksheet in xlPackage.Workbook.Worksheets)
                {
                    aworksheet.Cell(1, 1).Value = aworksheet.Cell(1, 1).Value;
                }

                ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["My Data"];

                ExcelCell cell = worksheet.Cell(5, 1);
                cell.Value = "15";

                //worksheet.Cell(5, 1).Value = "Soap";

                xlPackage.Save( );
                //Response.Write("Excel file created successfully");
            }

        }
        catch (Exception ex)
        {
            //Response.WriteFile(ex.InnerException.ToString());
        }

Got the issue. The problem is inherent to ExcelPackage. For the same you have to open each sheet and do some changes for it to get saved.

得到了这个问题。这个问题是ExcelPackage固有的。同样,您必须打开每个工作表并对其进行一些更改才能保存。

Search the forum for more explanation.

搜索论坛以获取更多解释。