Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathReadDataUsingLinq.cs
More file actions
Latest commit
94 lines (84 loc) · 4.56 KB
/
Copy pathReadDataUsingLinq.cs
File metadata and controls
94 lines (84 loc) · 4.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*************************************************************************************************
Required Notice: Copyright (C) EPPlus Software AB.
This software is licensed under PolyForm Noncommercial License 1.0.0
and may only be used for noncommercial purposes
https://polyformproject.org/licenses/noncommercial/1.0.0/
A commercial license to use this software can be purchased at https://epplussoftware.com
*************************************************************************************************
Date Author Change
*************************************************************************************************
01/27/2020 EPPlus Software AB Initial release EPPlus 5
*************************************************************************************************/
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.IO;
usingOfficeOpenXml;
usingSystem.Xml;
usingSystem.Drawing;
usingOfficeOpenXml.Style;
usingSystem.Linq;
namespaceEPPlusSamples
{
publicstaticclassReadDataUsingLinq
{
/// <summary>
/// This sample shows how to use Linq with the Cells collection
/// </summary>
/// <param name="outputDir">The path where sample7.xlsx is</param>
publicstaticvoidRun()
{
Console.WriteLine("Now open sample 9 again and perform some Linq queries...");
Console.WriteLine();
FileInfoexistingFile=FileUtil.GetFileInfo("09-PerformanceAndProtection.xlsx");
using(ExcelPackagepackage=newExcelPackage(existingFile))
{
ExcelWorksheetsheet=package.Workbook.Worksheets[0];
//Select all cells in column d between 9990 and 10000
varquery1=(fromcellinsheet.Cells["d:d"]wherecell.Valueisdouble&&(double)cell.Value>=9990&&(double)cell.Value<=10000selectcell);
Console.WriteLine("Print all cells with value between 9990 and 10000 in column D ...");
Console.WriteLine();
intcount=0;
foreach(varcellinquery1)
{
Console.WriteLine("Cell {0} has value {1:N0}",cell.Address,cell.Value);
count++;
}
Console.WriteLine("{0} cells found ...",count);
Console.WriteLine();
//Select all bold cells
Console.WriteLine("Now get all bold cells from the entire sheet...");
varquery2=(fromcellinsheet.Cells[sheet.Dimension.Address]wherecell.Style.Font.Boldselectcell);
//If you have a clue where the data is, specify a smaller range in the cells indexer to get better performance (for example "1:1,65536:65536" here)
count=0;
foreach(varcellinquery2)
{
if(!string.IsNullOrEmpty(cell.Formula))
{
Console.WriteLine("Cell {0} is bold and has a formula of {1:N0}",cell.Address,cell.Formula);
}
else
{
Console.WriteLine("Cell {0} is bold and has a value of {1:N0}",cell.Address,cell.Value);
}
count++;
}
//Here we use more than one column in the where clause. We start by searching column D, then use the Offset method to check the value of column C.
varquery3=(fromcellinsheet.Cells["d:d"]
wherecell.Valueisdouble&&
(double)cell.Value>=9500&&(double)cell.Value<=10000&&
cell.Offset(0,-1).GetValue<DateTime>().Year==DateTime.Today.Year+1
selectcell);
Console.WriteLine();
Console.WriteLine("Print all cells with a value between 9500 and 10000 in column D and the year of Column C is {0} ...",DateTime.Today.Year+1);
Console.WriteLine();
count=0;
foreach(varcellinquery3)//The cells returned here will all be in column D, since that is the address in the indexer. Use the Offset method to print any other cells from the same row.
{
Console.WriteLine("Cell {0} has value {1:N0} Date is {2:d}",cell.Address,cell.Value,cell.Offset(0,-1).GetValue<DateTime>());
count++;
}
}
}
}
}