This article shows you how you can access the xml header of a Qvd file without using QlikView programmatically using just .net & C#:
Every Qvd file in QlikView has a XML header (which you can easily prove by opening any Qvd file using a standard text editor):
There are several function available for usage withing QlikView load scripts for accessing these meta data:
QvdCreateTime(filename)
QvdNoOfRecords(filename)
QvdNoOfFields(filename)
QvdFieldName(filename , fieldno)
QvdTableName(filename)
Using these functions within a sample
// QlikView load script Set a = 'D:\QlikView\Transactions.qvd'; LET vFileSize = FileSize(a); LET vQvdCreateTime = QvdCreateTime(a); LET vQvdNoOfRecords = QvdNoOfRecords(a); LET vQvdNoOfFields = QvdNoOfFields(a); LET vQvdFieldName = QvdFieldName(a, 1); LET vQvdTableName = QvdTableName(a); TRACE --; TRACE FileSize: $(vFileSize); TRACE QvdNoOfRecords: $(vQvdNoOfRecords); TRACE QvdNoOfFields: $(vQvdNoOfFields); TRACE QvdFieldName(1): $(vQvdFieldName); TRACE QvdTableName: $(vQvdTableName); TRACE --;
would result into:
Certainly, for accessing these functions you have to use QlikView, but I wanted to be able to achieve the same results outside of QlikView.
So I’ve created a little .net (2.0) based library which you can use in your projects:
Using the class QvdMetaInfos is easy (example in C#):
foreach (FileInfo file in new DirectoryInfo(@"C:\\QlikView\").GetFiles("*.qvd")) { QlikLibs.QvdMetaInfos qvdInfos = new QlikLibs.QvdMetaInfos(file.FullName); Console.WriteLine("File:\t\t" + qvdInfos.QvdFileName); Console.WriteLine("QvdNoOfRecords:\t" + qvdInfos.QvdNoOfRecords.ToString()); Console.WriteLine("QvdNoOfFields:\t" + qvdInfos.QvdNoOfFields.ToString()); Console.WriteLine("QvdTableName:\t" + qvdInfos.QvdTableName); Console.WriteLine(""); Console.WriteLine("Fields:"); foreach (QlikLibs.QvdField qvdField in qvdInfos.QvdFields) { Console.Write("\t\t" + qvdField.FieldName); Console.Write(" (" + qvdField.NumberFormat.Type + ")\n"); } System.Console.Read(); }
The result:
5 Comments