我想创建一个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。
请让我知道当公式在表格中时如何正确地带来数据?
我不是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]