DbfExporter Code
Status: Beta
Brought to you by:
somalezu
File | Date | Author | Commit |
---|---|---|---|
DbfExporter | 2006-05-20 | somalezu | [r1] |
DbfExporterTests | 2006-05-20 | somalezu | [r1] |
Specificatii | 2006-05-20 | somalezu | [r1] |
DbfExporter.sln | 2006-05-20 | somalezu | [r1] |
build.bat | 2006-05-20 | somalezu | [r1] |
default.proj | 2006-05-20 | somalezu | [r1] |
readme.txt | 2006-05-20 | somalezu | [r1] |
DbfExporter Version : beta DbfExporter is a simple library that would export data from any .Net language to dbf (DBase III/ FoxPro 2.6) file format. Requirements - .Net Framework 2.0 (we are using generics, but the code could be easily modified and ported to .net 1.0 / 1.1 - No need for any ODBC drivers or 3rd party components - we are writing direct in binary format using System.Io streams. Typical usage : Define a class/structure that would specify the needed dbf file structure using ExportAsxxxColumn attributes : public struct Record { private string _employeeName; [ExportAsCharacterColumn("Name", 25)] public string EmployeeName { get{return _employeeName;} set{_employeeName = value;} } private decimal _tax; [ExportAsNumericColumn("Tax",10,2)] public decimal Tax { get{return _tax;} set{_tax = value;} } } Create an instance of the DbfExporter class, add rows and export to a dbf file : DbfExporter<Record> exporter = new DbfExporter<Record>(); Record firstRow = new Record(); firstRow.EmployeeName = "Tudor"; firstRow.Tax = 12.5m; exporter.Rows.Add( firstRow); exporter.ExportToFile(@"C:\test.dbf"); Supported dbf columns types : Numeric,Character, Date and Logical We have defined several complex attributes to facilitate export to fully denormalized files : - ExportAsCharacterColumnArray,ExportAsNumericColumnArray Exemple : private decimal[] _monthlyPayments = new decimal[12]; [ExportAsNumericColumnArray("Mnt_{Month}", "Month", 12, 10,2)] public string[] MonthlyPayments { get { return _monthlyPayments; } } This would export the _monthlyPayments array as a set of 12 numeric columns, Each of these columns would have 10 digits (2 decimals), named like this : Mnt_1, Mnt_2, Mnt_3...., Mnt_12 - ExportByContent would export properties having some complex types (user defined class or struct). Example : public class MarriedEmployee { private string _employeeName; [ExportAsCharacterColumn("Name",25)] public string EmployeeName { get{return _employeeName;} } private Wife _wife; [ExportByContent(typeof(Wife))] public Wife Wife { get{return _wife;} } } public struct Wife { private string _socialSecurityNumber; [ExportAsCharacterColumn("WIFE_SSN", 13)] public string SocialSecurityNumber { get{return _socialSecurityNumber;} } private string _name; [ExportAsCharacterColumn("Wife_Nam", 25)] public string Name { get{return _name;} } } - ExportByContentArray - would export array of user defined types a sets of basic dbf columns. Known issues : 1. The order of the exported columns is given by the order of properties definitions in the Row structure. You should pay attention when defining the template of the row. I am investigating some way to specify the order in a more explicit form. 2. No support for less freqvent data types like Picture, Memo...