base.xls:
code name birthday sex
1 zhang 1990-2-1 female
2 zhang 1990-3-1 male
3 wang 1990-3-2 female
4 li 1992-3-1 male
5 zhao 1994-3-2 female
6 zhao 1993-3-3 female
comp.xls
code name birthday sex
1 zhang 1990-2-1 female
2 wang 1990-3-1 female
3 wang 1990-3-2 female
4 li 1992-3-2 male
5 zhao 1994-3-2 female
6 zhao 1993-3-3 female
if the vlookup formula work, the output.xlsx should like
code name name
1 zhang zhang
2 zhang wang
3 wang wang
4 li li
5 zhao zhao
6 zhao zhao
but there are only first two columns ( code and name) in output.xlsx in the end.
How should I write the VLOOKUP formula ?
- Code: Select all
static void Main(string[] args)
{
string file1 = @"E:\base.xls";
string file2 = @"E:\comp.xls";
Workbook workbook1 = new Workbook();
workbook1.LoadFromFile(file1);
Worksheet sheet1 = workbook1.Worksheets[0];
Workbook workbook2 = new Workbook();
workbook2.LoadFromFile(file2);
Worksheet sheet2 = workbook2.Worksheets[0];
Workbook wb_temp1 = new Workbook();
Worksheet st_temp1 = wb_temp1.Worksheets[0];
sheet1.Columns[0].Copy(st_temp1.Columns[0]);
sheet1.Columns[1].Copy(st_temp1.Columns[1]);
int y = sheet1.Rows.Count();
string cFormula = "=VLOOKUP(A:A,workbook2.Worksheets[0]!A:B, " ,+ 2 + ",0)";
//string cFormula = "=VLOOKUP(A:A,sheet2!A:B, " ,+ 2 + ",0)";
st_temp1.Range[1, 3, y, 3].Formula = cFormula;
st_temp1Range[1, 4, y, 4].Value = st_temp1.Range[1, 3, y, 3].FormulaValue.ToString();
wb_temp1.SaveToFile(@"E:\output.xlsx", ExcelVersion.Version2010);
string currFormula = "=IF(B2=C2, 0, 1)";
st_temp1.Range[1,4, y,4].Formula = currFormula;
Spire.Xls.Collections.AutoFiltersCollection filters = st_temp1.AutoFilters;
filters.Range = st_temp1.Range[1, 4, st_temp1.LastRow, 4];
filters.AddFilter(0, "1");
wb_temp1.SaveToFile( @"E:\outputfilter.xlsx", ExcelVersion.Version2010);
}