public void WriteGB2312() { var dbf = new Dbf(encoding); fields.ForEach(x => dbf.Fields.Add(x)); DbfRecord record = dbf.CreateRecord(); foreach (var field in fields) { object item = null; try { item = data[field.Name]; } catch (Exception) { // ignored } record.Data[fields.IndexOf(field)] = item; } // Act. dbf.Write("test.dbf", DbfVersion.FoxBaseDBase3NoMemo); // Assert. var dbfTest = new Dbf(encoding); dbfTest.Read("test.dbf"); var rowStd = dbfTest.Records[0]; Assert.AreEqual(rowStd["中文字段"], "股票代码"); Assert.AreEqual(rowStd["中文字段2"], "股票代码股"); //should be truncated to 10 bytes }
public List <Payment> Parser(int branchOfficeId, PaymentChannel paymentChannel, IFormFile file) { var listPayments = new List <Payment>(); using var ms = new MemoryStream(); file.CopyTo(ms); var dbf = new Dbf(Encoding.GetEncoding(866)); dbf.Read(ms); var recordList = paymentChannel.TotalRecord == FileTotalRow.Last ? dbf.Records.GetRange(0, dbf.Records.Count - 1) : dbf.Records.GetRange(Convert.ToInt16(paymentChannel.TotalRecord), dbf.Records.Count - Convert.ToInt16(paymentChannel.TotalRecord)); foreach (DbfRecord record in recordList) { listPayments.Add( new Payment( DateTime.ParseExact(record[paymentChannel.DateFieldName].ToString(), paymentChannel.TextDateFormat, new CultureInfo(CultureInfo.CurrentCulture.ToString())), Convert.ToDecimal(record[paymentChannel.SumFieldName].ToString()), _branchOfficeService.GetOne(branchOfficeId).CurrentPeriodId, paymentChannel.PaymentsType, string.Join(" ", paymentChannel.PersonFieldName.Split("+").Select(x => record[x]).ToList()), _ercContext.AccountingPoints.FirstOrDefault(x => x.Name == record[paymentChannel.RecordpointFieldName.Trim()].ToString())?.Id, record[paymentChannel.RecordpointFieldName].ToString() ) ); } return(listPayments); }
public void testInit() { dbf = new Dbf(); using (FileStream baseStream = File.Open("fixtures/83/dbase_83.dbf", FileMode.Open, FileAccess.Read)) using (FileStream memoStream = File.Open("fixtures/83/dbase_83.dbt", FileMode.Open, FileAccess.Read)) dbf.Read(baseStream, memoStream); }
private Dbf ReadBrokenFields() { var dbf = new Dbf(); dbf.Read("fixtures/fields/POST986.dbf"); return(dbf); }
private Dbf ReadStandard() { var standard = new Dbf(encoding); standard.Read("fixtures/CP866/SPXXXX0159.dbf"); return(standard); }
public void WriteOneField() { dbf = new Dbf(); DbfField field = new DbfField("TEST", DbfFieldType.Character, 12); dbf.Fields.Add(field); dbf.Write("test.dbf", DbfVersion.VisualFoxPro); dbf = new Dbf(); dbf.Read("test.dbf"); Assert.AreEqual("TEST", dbf.Fields[0].Name, "Field name should be TEST."); }
public void Parse() { logger.Info("Parsing file {0}", SourceFileName); if (RootNode == null) { RootNode = new XElement(XMLRootName); } Dbf dbf = new Dbf(); try { dbf.Read(this.SourceFileName); ParseHeader(dbf); logger.Trace("Parsing dbf records"); for (int row = 0; row < dbf.Records.Count; row++) { RecordCount = row; XElement node = new XElement("Item"); RootNode.Add(node); for (int column = 0; column < dbf.Records[row].Data.Count; column++) { string cell = null; if (dbf.Records[row].Data[column] == null) { cell = "null"; } else { cell = dbf.Records[row].Data[column].ToString(); } node.Add(new XElement(Headers[column], cell)); } } logger.Trace("DBF file is parsed successfully RecordCount {0}", RecordCount); } catch (Exception ex) { logger.Error(ex, $"DBF file parsing error {SourceFileName}"); throw new Exception($"DBF file parsing error {SourceFileName} Error:" + ex.Message); } }
public void DateTimeField() { dbf = new Dbf(); DbfField field = new DbfField("TEST", DbfFieldType.DateTime, 8); dbf.Fields.Add(field); DbfRecord record = dbf.CreateRecord(); record.Data[0] = new DateTime(2018, 8, 7, 20, 15, 8); dbf.Write("test.dbf", DbfVersion.VisualFoxPro); dbf = new Dbf(); dbf.Read("test.dbf"); Assert.AreEqual(new DateTime(2018, 8, 7, 20, 15, 8), dbf.Records[0][0], "Record content should be 2018-08-07 20:15:08."); }
public void LogicalField() { dbf = new Dbf(); DbfField field = new DbfField("TEST", DbfFieldType.Logical, 12); dbf.Fields.Add(field); DbfRecord record = dbf.CreateRecord(); record.Data[0] = true; dbf.Write("test.dbf", DbfVersion.VisualFoxPro); dbf = new Dbf(); dbf.Read("test.dbf"); Assert.AreEqual(true, dbf.Records[0][0], "Record content should be TRUE."); }
public void WriteFieldAndRecord() { dbf = new Dbf(); DbfField field = new DbfField("TEST", DbfFieldType.Character, 12); dbf.Fields.Add(field); DbfRecord record = dbf.CreateRecord(); record.Data[0] = "HELLO"; dbf.Write("test.dbf", DbfVersion.VisualFoxPro); dbf = new Dbf(); dbf.Read("test.dbf"); Assert.AreEqual("HELLO", dbf.Records[0][0], "Record content should be HELLO."); }
public void NumericField() { dbf = new Dbf(); DbfField field = new DbfField("TEST", DbfFieldType.Numeric, 12, 2); dbf.Fields.Add(field); DbfRecord record = dbf.CreateRecord(); record.Data[0] = 3.14; dbf.Write("test.dbf", DbfVersion.VisualFoxPro); dbf = new Dbf(); dbf.Read("test.dbf"); Assert.AreEqual(3.14, dbf.Records[0][0], "Record content should be 3.14."); }
public void CurrencyField() { dbf = new Dbf(); DbfField field = new DbfField("TEST", DbfFieldType.Currency, 4); dbf.Fields.Add(field); DbfRecord record = dbf.CreateRecord(); record.Data[0] = 4.34F; dbf.Write("test.dbf", DbfVersion.VisualFoxPro); dbf = new Dbf(); dbf.Read("test.dbf"); Assert.AreEqual((float)4.34, dbf.Records[0][0], "Record content should be 4.34."); }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding encoding = System.Text.Encoding.GetEncoding("big5"); Dbf dbf = new Dbf(encoding); dbf.Read(@"C:\Users\coder\Desktop\data\shp_bah.dbf"); foreach (DbfRecord record in dbf.Records) { for (int i = 0; i < dbf.Fields.Count; i++) { Console.WriteLine(record[i]); } } Console.WriteLine(dbf.Records.Count); Console.WriteLine("Hello World!"); Console.ReadKey(); }
public static WorkflowFile LoadFromDbfFile(string filePath, DbfLoadingOptions options) { CheckExtension(filePath, ".dbf"); var content = new XDocument(); content.Add(new XElement(options.XmlRootName)); using (var fileStream = ReadFile(filePath)) { var parser = new Dbf(options.FileEncoding); parser.Read(fileStream); // Parse headers var headers = ParserBase.GetCleanHeaders(parser.Fields.Select(field => field.Name).ToArray()); for (int row = 0; row < parser.Records.Count; row++) { var node = new XElement("Item"); content.Add(node); for (int column = 0; column < parser.Records[row].Data.Count; column++) { if (parser.Records[row].Data[column] == null) { node.Add(new XElement(headers[column], "null")); continue; } node.Add(new XElement(headers[column], parser.Records[row].Data[column].ToString())); } } } return(new WorkflowFile(filePath, content)); }
public void testInit() { dbf = new Dbf(); dbf.Read("fixtures/31/dbase_31.dbf"); }
public void testInit() { dbf = new Dbf(); dbf.Read("fixtures/83/dbase_83.dbf"); }
public void testInit() { dbf = new Dbf(); dbf.Read("fixtures/f5/dbase_f5.dbf"); }
public static DataTable ReadDBFfile(string filePath, int monthIndex) { var dbf = new Dbf(); dbf.Read(filePath); var dt = new DataTable(); //return dt; // Cols for (int i = 0; i < dbf.Fields.Count; i++) { dt.Columns.Add(dbf.Fields[i].Name, dbf.Fields[i].GetType().GetProperties()[0].PropertyType); } // Rows foreach (DbfRecord record in dbf.Records) { var row = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { row[i] = record.Data[i]; } dt.Rows.Add(row); } // Clean dbf = null; //filter the datafrom row in myDTable.AsEnumerable() string EMP_UAN = string.Empty; string EMP_NAME = string.Empty; //var dt2 = new DataTable(); //SHOULD I make a concrete class for this var res = from myRow in dt.AsEnumerable() where myRow.Field <string>("WAGE" + monthIndex.ToString()) != null select new Anon { EMP_UAN = myRow.Field <string>("EMP_UAN"), EMP_NAME = myRow.Field <string>("EMP_NAME"), EMP_WAGE = Convert.ToInt32(myRow.Field <string>("WAGE" + monthIndex.ToString())) }; dt = new DataTable(); dt.Columns.Add("EMP_UAN"); dt.Columns.Add("EMP_NAME"); dt.Columns.Add("WAGE" + monthIndex.ToString()); foreach (var item in res) { DataRow row = dt.NewRow(); foreach (var col in dt.Columns) { row[columnName : "EMP_UAN"] = item.EMP_UAN; row[columnName : "EMP_NAME"] = item.EMP_NAME; row[columnName : "WAGE" + monthIndex.ToString()] = item.EMP_WAGE; } dt.Rows.Add(row); } return(dt); }
public static DataTable ReadDBFfile(string filePath, int monthIndex) { var dbf = new Dbf(); dbf.Read(filePath); var dt = new DataTable(); //return dt; // Cols for (int i = 0; i < dbf.Fields.Count; i++) { dt.Columns.Add(dbf.Fields[i].Name, dbf.Fields[i].GetType().GetProperties()[0].PropertyType); } // Rows foreach (DbfRecord record in dbf.Records) { var row = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { row[i] = record.Data[i]; } dt.Rows.Add(row); } // Clean dbf = null; //var dt2 = new DataTable(); //converting index value to string for some column to get month in spell MonthOption month = (MonthOption)monthIndex; string pf = "PF" + monthIndex; string monthValue = month.ToString(); string eePercent = monthValue.Substring(0, 3) + "EE"; string erPercent = monthValue.Substring(0, 3) + "ER"; //SHOULD I make a concrete class for this var res = from myRow in dt.AsEnumerable() where myRow.Field <string>("WAGE" + monthIndex.ToString()) != null select new Anon { EMP_UAN = myRow.Field <string>("EMP_UAN"), EMP_NAME = myRow.Field <string>("EMP_NAME"), EMP_WAGE = Convert.ToInt32(myRow.Field <string>("WAGE" + monthIndex.ToString())), EMP_WAGE2 = Convert.ToInt32(myRow.Field <string>("WAGE" + monthIndex.ToString())), EMP_WAGE3 = Convert.ToInt32(myRow.Field <string>("WAGE" + monthIndex.ToString())), EMP_WAGE4 = Convert.ToInt32(myRow.Field <string>("WAGE" + monthIndex.ToString())), EE_Percent = Convert.ToInt32(myRow.Field <string>(eePercent)), PF = Convert.ToInt32(myRow.Field <string>(pf)), ER_Percent = Convert.ToInt32(myRow.Field <string>(erPercent)) }; dt = new DataTable(); dt.Columns.Add("EMP_UAN"); dt.Columns.Add("EMP_NAME"); dt.Columns.Add("WAGE" + monthIndex.ToString()); dt.Columns.Add("WAGE" + monthIndex.ToString() + 1); dt.Columns.Add("WAGE" + monthIndex.ToString() + 2); dt.Columns.Add("WAGE" + monthIndex.ToString() + 3); dt.Columns.Add("EEPer" + monthIndex.ToString()); dt.Columns.Add(pf); dt.Columns.Add("ERPer" + monthIndex.ToString()); dt.Columns.Add("NCPDays"); dt.Columns.Add("Totaldays"); foreach (var item in res) { DataRow row = dt.NewRow(); foreach (var col in dt.Columns) { row[columnName : "EMP_UAN"] = item.EMP_UAN; row[columnName : "EMP_NAME"] = item.EMP_NAME; row[columnName : "WAGE" + monthIndex.ToString()] = item.EMP_WAGE; row[columnName : "WAGE" + monthIndex.ToString() + 1] = item.EMP_WAGE2; row[columnName : "WAGE" + monthIndex.ToString() + 2] = item.EMP_WAGE3; row[columnName : "WAGE" + monthIndex.ToString() + 3] = item.EMP_WAGE4; row[columnName : "EEPer" + monthIndex.ToString()] = item.EE_Percent; row[columnName : pf] = item.PF; row[columnName : "ERPer" + monthIndex.ToString()] = item.ER_Percent; row[columnName : "NCPdays"] = 0; row[columnName : "Totaldays"] = 0; } dt.Rows.Add(row); } return(dt); }