Oproepmethode:
vb:
uitlezen gebeurd hiermee:
De code om uit te lezen geeft een string terug. dit geeft je ernorm veel mogelijkheden, zoals het opbouwen van een array.
Veel Geluk ermee
Thomas.Muylaert
code:
1
| MessageBox.Show(ExcelVeld.HaalVeldWaarde("padnaam maak hier gebruik van 2 \ ipv 1", "naam sheet", "veld")); |
vb:
code:
1
| MessageBox.Show(ExcelVeld.HaalVeldWaarde("c:\\users\\Thomas\\test.xlsx", "Sheet 1", "A2")); |
uitlezen gebeurd hiermee:
code:
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
95
96
97
98
99
100
| public string HaalVeldWaarde(string fileName, string sheetName, string addressName)
{
const string documentRelationshipType = "http://schemas.openxmlformats.org/officeDocument/" + "2006/relationships/officeDocument";
const string worksheetSchema = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
const string sharedStringsRelationshipType = "http://schemas.openxmlformats.org/officeDocument/" + "2006/relationships/sharedStrings";
const string sharedStringSchema = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
string cellwaarde = null;
using (Package xlPackage = Package.Open(fileName, FileMode.Open, FileAccess.Read))
{
PackagePart documentPart = null;
Uri documentUri = null;
foreach (System.IO.Packaging.PackageRelationship relationship in xlPackage.GetRelationshipsByType(documentRelationshipType))
{
documentUri = PackUriHelper.ResolvePartUri(new Uri("/", UriKind.Relative), relationship.TargetUri);
documentPart = xlPackage.GetPart(documentUri);
break;
}
if (documentPart != null)
{
XmlDocument doc = new XmlDocument();
doc.Load(documentPart.GetStream());
NameTable nt = new NameTable();
XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
nsManager.AddNamespace("d", worksheetSchema);
nsManager.AddNamespace("s", sharedStringSchema);
string searchString = string.Format("//d:sheet[@name='{0}']", sheetName);
XmlNode sheetNode = doc.SelectSingleNode(searchString, nsManager);
if (sheetNode != null)
{
XmlAttribute relationAttribute =
sheetNode.Attributes["r:id"];
if (relationAttribute != null)
{
string relId = relationAttribute.Value;
PackageRelationship sheetRelation =
documentPart.GetRelationship(relId);
Uri sheetUri = PackUriHelper.ResolvePartUri(
documentUri, sheetRelation.TargetUri);
PackagePart sheetPart = xlPackage.GetPart(sheetUri);
XmlDocument sheetDoc = new XmlDocument(nt);
sheetDoc.Load(sheetPart.GetStream());
XmlNode cellNode = sheetDoc.SelectSingleNode(string.Format("//d:sheetData/d:row/d:c[@r='{0}']", addressName), nsManager);
if (cellNode != null)
{
XmlAttribute typeAttr = cellNode.Attributes["t"];
string cellType = string.Empty;
if (typeAttr != null)
{
cellType = typeAttr.Value;
}
XmlNode valueNode = cellNode.SelectSingleNode("d:v", nsManager);
if (valueNode != null)
{
cellwaarde = valueNode.InnerText;
}
if (cellType == "b")
{
if (cellwaarde == "1")
{
cellwaarde = "TRUE";
}
else
{
cellwaarde = "FALSE";
}
}
else if (cellType == "s")
{
foreach (System.IO.Packaging.PackageRelationship
stringRelationship in
documentPart.GetRelationshipsByType(sharedStringsRelationshipType))
{
Uri sharedStringsUri = PackUriHelper.ResolvePartUri(
documentUri, stringRelationship.TargetUri);
PackagePart stringPart = xlPackage.GetPart(sharedStringsUri);
if (stringPart != null)
{
XmlDocument stringDoc = new XmlDocument(nt);
stringDoc.Load(stringPart.GetStream());
nsManager.AddNamespace("s", sharedStringSchema);
int requestedString = Convert.ToInt32(cellwaarde);
string strSearch = string.Format(
"//s:sst/s:si[{0}]", requestedString + 1);
XmlNode stringNode =
stringDoc.SelectSingleNode(strSearch, nsManager);
if (stringNode != null)
{
cellwaarde = stringNode.InnerText;
}
}
}
}
}
}
}
}
}
return cellwaarde;
}
} |
De code om uit te lezen geeft een string terug. dit geeft je ernorm veel mogelijkheden, zoals het opbouwen van een array.
Veel Geluk ermee
Thomas.Muylaert