EPPlus -创建一个新文件,当源数据在数据表中时,公式在所有行中保持相同

本文关键字:数据表 创建 一个 新文件 EPPlus 文件 数据 | 更新日期: 2023-09-27 18:06:44

我想创建一个excel文件[p.xlsx]的副本。它有两个电子表格- sheet1和sheet2。我使用p.xlsx作为模板文件创建了另一个文件perror.xlsx。

Sheet1数据如下(第二列有一个公式):

COL1, COl2

MICK1 = A2

MICk2, = A3

Sheet1中的数据被定义为一个表- Table1 =$ a:$B

Sheet2是"not defined"作为表,数据再次相同

COL1, COl2

MICK1 = A2

MICk2, = A3

执行如下代码:

string ErrFileName = @"C:''TEMP''pErrors.xlsx";  //Destination file
FileInfo errorFile = new FileInfo(ErrFileName);
string templatefile = @"C:''TEMP''p.xlsx";   //Source file
FileInfo template = new FileInfo(templatefile);
ExcelPackage errorExcelFile = new ExcelPackage(errorFile, template);
errorExcelFile.Save();
errorExcelFile.Dispose();

当我打开error.xlsx文件时,我看到sheet1中的数据为

COL1, COl2

MICK1, MICK1

MICk2, MICK1

对公式进行分析,发现如下:

COL1, COl2

MICK1 = A2

MICk2 = A2

但是sheet2被正确填充了。

COL1, COl2

MICK1, MICK1

MICk2, MICk2

那么这是否意味着当数据在表中时,EPPLUS不能正确地带来公式?

只有在源文件中,我在excel中打开它,单击sheet1,访问设计菜单,转换为范围,保存时,我才能正确地将数据带入sheet1。

请让我知道当公式在表格中时如何正确地带来数据?

EPPlus -创建一个新文件,当源数据在数据表中时,公式在所有行中保持相同

我不是100%确定我理解你想要达到的目的,但你可以使用SaveAs():

string ErrFileName = @"C:''TEMP''pErrors.xlsx";  //Destination file
FileInfo errorFile = new FileInfo(ErrFileName);
string templatefile = @"C:''TEMP''p.xlsx";   //Source file
FileInfo template = new FileInfo(templatefile);
ExcelPackage templateFile = new ExcelPackage(template);
templateFile.SaveAs(errorFile);
errorExcelFile.Dispose();

(作为题外话-在using{}块中包装IDisposable而不是显式调用.Dispose()是正常的-你的代码,你的决定)

当数据在表格中时,需要在COL2

中更改公式
COL1, COl2
MICK1,=[COL1]
MICk2,=[COL1]