亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#生成DBF文件

2019-11-17 02:13:35
字體:
來源:轉載
供稿:網友

C#生成DBF文件

C# 生成DBF,無需注冊Microsoft.Jet.OLEDB。

 1 namespace Consoleapplication 2 { 3     class PRogram 4     { 5         static void Main(string[] args) 6         { 7             Test(); 8             Console.ReadKey(); 9         }10 11         private static void Test()12         {13             string testPath = AppDomain.CurrentDomain.BaseDirectory;14             var odbf = new DbfFile(Encoding.GetEncoding(936));15             odbf.Open(Path.Combine(testPath, "test.dbf"), FileMode.Create);16 17             //創建列頭18             odbf.Header.AddColumn(new DbfColumn("編號", DbfColumn.DbfColumnType.Character, 20, 0));19             odbf.Header.AddColumn(new DbfColumn("名稱", DbfColumn.DbfColumnType.Character, 20, 0));20             odbf.Header.AddColumn(new DbfColumn("地址", DbfColumn.DbfColumnType.Character, 20, 0));21             odbf.Header.AddColumn(new DbfColumn("時間", DbfColumn.DbfColumnType.Date));22             odbf.Header.AddColumn(new DbfColumn("余額", DbfColumn.DbfColumnType.Number, 15, 3));23 24             var orec = new DbfRecord(odbf.Header) { AllowDecimalTruncate = true };25             List<User> list = User.GetList();26             foreach (var item in list)27             {28                 orec[0] = item.UserCode;29                 orec[1] = item.UserName;30                 orec[2] = item.Address;31                 orec[3] = item.date.ToString("yyyy-MM-dd HH:mm:ss");32                 orec[4] = item.money.ToString();33                 odbf.Write(orec, true);34             }35             odbf.Close();36         }37     }38 39     public class User40     {41         public string UserCode { get; set; }42         public string UserName { get; set; }43         public string Address { get; set; }44         public DateTime date { get; set; }45         public decimal money { get; set; }46 47         public static List<User> GetList()48         {49             List<User> list = new List<User>();50             list.Add(new User() { UserCode = "A1", UserName = "張三", Address = "上海楊浦", date = DateTime.Now, money = 1000.12m });51             list.Add(new User() { UserCode = "A2", UserName = "李四", Address = "湖北武漢", date = DateTime.Now, money = 31000.008m });52             list.Add(new User() { UserCode = "A3", UserName = "王子龍", Address = "陜西西安", date = DateTime.Now, money = 2000.12m });53             list.Add(new User() { UserCode = "A4", UserName = "李三", Address = "北京", date = DateTime.Now, money = 3000.12m });54             return list;55         }56     }57 58 }

生成的文件截圖:

操作DBF文件的部分代碼:

  1 ///  2 /// Author: Ahmed Lacevic  3 /// Date: 12/1/2007  4 /// Desc:   5 ///   6 /// Revision History:  7 /// -----------------------------------  8 ///   Author:  9 ///   Date: 10 ///   Desc: 11  12  13 using System; 14 using System.Collections.Generic; 15 using System.Text; 16 using System.IO; 17 using System.Globalization; 18  19  20 namespace SocialExplorer.IO.FastDBF 21 { 22  23     /// <summary> 24     /// Use this class to create a record and write it to a dbf file. You can use one record object to write all records!! 25     /// It was designed for this kind of use. You can do this by clearing the record of all data  26     /// (call Clear() method) or setting values to all fields again, then write to dbf file.  27     /// This eliminates creating and destroying objects and optimizes memory use. 28     ///  29     /// Once you create a record the header can no longer be modified, since modifying the header would make a corrupt DBF file. 30     /// </summary> 31     public class DbfRecord 32     { 33  34         /// <summary> 35         /// Header provides information on all field types, sizes, precision and other useful information about the DBF. 36         /// </summary> 37         private DbfHeader mHeader = null; 38  39         /// <summary> 40         /// Dbf data are a mix of ASCII characters and binary, which neatly fit in a byte array. 41         /// BinaryWriter would esentially perform the same conversion using the same Encoding class. 42         /// </summary> 43         private byte[] mData = null; 44  45         /// <summary> 46         /// Zero based record index. -1 when not set, new records for example. 47         /// </summary> 48         private int mRecordIndex = -1; 49  50         /// <summary> 51         /// Empty Record array reference used to clear fields quickly (or entire record). 52         /// </summary> 53         private readonly byte[] mEmptyRecord = null; 54  55  56         /// <summary> 57         /// Specifies whether we allow strings to be truncated. If false and string is longer than we can fit in the field, an exception is thrown. 58         /// </summary> 59         private bool mAllowStringTruncate = true; 60  61         /// <summary> 62         /// Specifies whether we allow the decimal portion of numbers to be truncated.  63         /// If false and decimal digits overflow the field, an exception is thrown. 64         /// </summary> 65         private bool mAllowDecimalTruncate = false; 66  67         /// <summary> 68         /// Specifies whether we allow the integer portion of numbers to be truncated. 69         /// If false and integer digits overflow the field, an exception is thrown. 70         /// </summary> 71         private bool mAllowIntegerTruncate = false; 72  73  74         //array used to clear decimals, we can clear up to 40 decimals which is much more than is allowed under DBF spec anyway. 75         //Note: 48 is ASCII code for 0. 76         private static readonly byte[] mDecimalClear = new byte[] {48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, 77                                                                48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, 78                                                                48,48,48,48,48,48,48,48,48,48,48,48,48,48,48}; 79  80  81         //Warning: do not make this one static because that would not be thread safe!! The reason I have  82         //placed this here is to skip small memory allocation/deallocation which fragments memory in .net. 83         private int[] mTempIntVal = { 0 }; 84  85  86         //Ascii Encoder 87         private readonly Encoding encoding = Encoding.ASCII; 88  89         /// <summary> 90         /// Column Name to Column Index map 91         /// </summary> 92         private readonly Dictionary<string, int> mColNameToConIdx = new Dictionary<string, int>(StringComparer.InvariantCulture); 93  94  95  96         /// <summary> 97         ///  98         /// </summary> 99         /// <param name="oHeader">Dbf Header will be locked once a record is created 100         /// since the record size is fixed and if the header was modified it would corrupt the DBF file.</param>101         public DbfRecord(DbfHeader oHeader)102         {103             mHeader = oHeader;104             mHeader.Locked = true;105 106             //create a buffer to hold all record data. We will reuse this buffer to write all data to the file.107             mData = new byte[mHeader.RecordLength];108             mEmptyRecord = mHeader.EmptyDataRecord;109             encoding = oHeader.encoding;110 111             for (int i = 0; i < oHeader.mFields.Count; i++)112                 mColNameToConIdx[oHeader.mFields[i].Name] = i;113         }114 115 116         /// <summary>117         /// Set string data to a column, if the string is longer than specified column length it will be truncated!118         /// If dbf column type is not a strin
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久在线播放| 欧美极品少妇与黑人| 色午夜这里只有精品| 88国产精品欧美一区二区三区| 欧美激情综合色| 欧美激情a∨在线视频播放| 在线丨暗呦小u女国产精品| 日本a级片电影一区二区| 亚洲欧美福利视频| 北条麻妃在线一区二区| 国产精品∨欧美精品v日韩精品| 国产亚洲精品久久久| 亚洲精品久久在线| 色七七影院综合| 亚洲国产婷婷香蕉久久久久久| 91精品国产免费久久久久久| 亚洲天堂精品在线| 91国在线精品国内播放| 亚洲欧洲国产伦综合| 久久久极品av| 亚洲久久久久久久久久| 亚洲一区二区少妇| 久久久久久久色| 成人免费网站在线观看| 成人免费网站在线| 日韩精品欧美国产精品忘忧草| 亚洲福利视频二区| 国产日韩欧美中文在线播放| 色樱桃影院亚洲精品影院| 亚洲午夜久久久影院| 日韩中文字幕网站| 日本国产欧美一区二区三区| 精品国内产的精品视频在线观看| 亚洲在线视频福利| 欧美一级成年大片在线观看| 97超级碰碰人国产在线观看| 国内久久久精品| 国产精品最新在线观看| 日韩精品在线观看一区| 91精品国产高清自在线| 中国日韩欧美久久久久久久久| 日韩精品在线播放| 欧美日韩福利在线观看| 亚洲二区中文字幕| 97香蕉超级碰碰久久免费的优势| 欧洲午夜精品久久久| 国产成人中文字幕| 亚洲国产精品99| 亚洲男人7777| 亚洲美女性生活视频| 欧美性猛交xxxx免费看漫画| 亚洲影院高清在线| 欧美大片在线看免费观看| 久久五月情影视| 亚洲精品一区二区网址| 欧美人与物videos| 亚洲影院色在线观看免费| 精品亚洲一区二区三区在线观看| 亚洲最新av在线| 成人激情免费在线| 欧美国产高跟鞋裸体秀xxxhd| 精品在线观看国产| 一道本无吗dⅴd在线播放一区| 久久久久999| 国产美女高潮久久白浆| 欧美激情精品久久久久久蜜臀| 亚洲一区制服诱惑| 欧美三级免费观看| 国产一区二区色| 午夜精品一区二区三区在线视频| 欧美日韩亚洲国产一区| 精品久久久久久中文字幕一区奶水| 国产视频亚洲视频| 狠狠久久亚洲欧美专区| 久久综合伊人77777蜜臀| 成人精品视频在线| 国产91精品久久久久久久| 亚洲摸下面视频| 成人午夜小视频| 亚洲成色www8888| 日韩电影中文字幕av| 亚洲精品久久久久久下一站| 国产日韩中文字幕在线| 欧美日韩国产在线看| 欧美三级欧美成人高清www| 日韩欧美有码在线| 日韩一区视频在线| 亚洲在线第一页| 欧美中文字幕在线视频| 日本一区二区在线播放| 欧美成人精品xxx| 在线成人激情黄色| 欧美黄色小视频| 欧美性xxxxxxx| 国产中文字幕亚洲| 久久久国产精品免费| 亚洲男人的天堂在线| 亚洲全黄一级网站| 欧美另类精品xxxx孕妇| 国产成人精品999| 久久精品国产一区| 亚洲欧美另类人妖| 欧美精品性视频| 精品久久久中文| 欧美激情图片区| 亚洲精品视频在线观看视频| 欧美激情乱人伦| 国产成人一区二区三区| 亚洲精品国产拍免费91在线| 欧美成aaa人片在线观看蜜臀| 国产精品午夜一区二区欲梦| 国产精品一区二区三区久久久| 欧美电影免费观看高清完整| 日韩久久精品成人| 国产精品久久久久久搜索| 国产精品福利久久久| 欧美午夜激情视频| 色综合视频网站| 国产精品2018| 中文字幕亚洲一区二区三区五十路| 中文字幕自拍vr一区二区三区| 亚洲精品电影网在线观看| 亚洲美女久久久| 2020国产精品视频| 欧美性色19p| 成人激情在线观看| 日韩精品在线观看网站| 91久久精品日日躁夜夜躁国产| 亚洲精品福利免费在线观看| 成人黄色免费片| 91精品久久久久久久久中文字幕| 国产免费观看久久黄| 国产成人午夜视频网址| 欧美精品久久一区二区| 日韩av成人在线观看| 亚洲电影成人av99爱色| 欧美日韩国产一区二区| 国产日产欧美精品| 亚洲深夜福利视频| 国外成人在线视频| 清纯唯美亚洲综合| 亚洲国产日韩欧美在线图片| 国产999在线观看| 欧美精品少妇videofree| 亚洲精品视频在线播放| 亚洲va欧美va在线观看| 国产激情久久久| 国产精品88a∨| 日韩精品高清在线| 国产日韩换脸av一区在线观看| 亚洲欧美日韩一区二区三区在线| 免费av在线一区| 色综合天天综合网国产成人网| 亚洲精品色婷婷福利天堂| 91在线网站视频| 国产精品高清免费在线观看| 久久综合国产精品台湾中文娱乐网| 精品无人区乱码1区2区3区在线| 欧美精品电影在线| 日韩av免费观影| 日韩av中文字幕在线| 亚洲va欧美va国产综合剧情| 亚洲第一偷拍网| 国产日韩欧美电影在线观看|