/// <summary>
        /// get project pages (from pages.dbf)
        /// </summary>
        /// <param name="path"></param>
        public void GetProjectPages(string path, bool retrievePageANs = true)
        {
            using (var dbfTable = new DbfTable(path, System.Text.Encoding.UTF8))
            {
                var skipDeleted = true;
                var dbfRecord   = new DbfRecord(dbfTable);
                while (dbfTable.Read(dbfRecord))
                {
                    if (skipDeleted && dbfRecord.IsDeleted)
                    {
                        continue;
                    }

                    CitectPages.Add(new CitectPages {
                        PageName = dbfRecord.Values[0].ToString(), ObjectANs = new List <int>()
                    });
                }
            }
            var subdir = path.Substring(0, path.LastIndexOf('\\'));

            if (retrievePageANs)
            {
                GetPageAns(subdir + @"\pgdynobj.dbf");
            }
        }
 private KartSs ParseKartSsRecord(DbfRecord record)
 {
     return(new
            (
                record.GetString("COD_SS"),
                record.GetString("СЕЛЬСОВЕТ")));
 }
 private ASVIDYST ParseASVIDYSTRecord(DbfRecord record)
 {
     return(new
            (
                record.GetString("COD_SS"),
                record.GetString("MESTO")));
 }
Esempio n. 4
0
        public static void Init(string path_root)
        {
            PathDirectory = path_root + @"DBF\";
            if (!Directory.Exists(PathDirectory))
            {
                Directory.CreateDirectory(PathDirectory);
            }

            var afs = Directory.GetFiles(PathDirectory, "*.dbf");

            if (afs.Length > 0)
            {
                for (int k = 0; k < afs.Length; k++)
                {
                    string fi   = afs[k];
                    var    odbf = new DbfFile(Encoding.GetEncoding(1252));
                    odbf.Open(fi, FileMode.Open); //State_vars1.dbf  county_vars1.dbf

                    //read and print records to screen...
                    var orec = new DbfRecord(odbf.Header);
                    for (int i = 0; i < odbf.Header.RecordCount; i++)
                    {
                        if (!odbf.Read(i, orec))
                        {
                            break;
                        }
                        //osw.WriteLine("index: " + orec.RecordIndex + ": " + orec);

                        string ji = orec.ToJson();
                    }
                }
            }
        }
 private KartSt ParseKartStRecord(DbfRecord record)
 {
     return(new
            (
                record.GetString("COD_ST"),
                record.GetString("STREET")));
 }
    public static DbfRecord ConvertFromProtobuf(ScenarioDbRecord protoScenario)
    {
        if (protoScenario == null)
        {
            return(null);
        }
        DbfRecord record = new DbfRecord();

        AddDbfField(record, "ID", protoScenario.Id);
        AddDbfField(record, "NOTE_DESC", protoScenario.NoteDesc);
        AddDbfField(record, "PLAYERS", protoScenario.NumPlayers);
        AddDbfField(record, "PLAYER1_HERO_CARD_ID", (int)protoScenario.Player1HeroCardId);
        AddDbfField(record, "PLAYER2_HERO_CARD_ID", (int)protoScenario.Player2HeroCardId);
        AddDbfField(record, "IS_EXPERT", protoScenario.IsExpert);
        AddDbfField(record, "IS_COOP", !protoScenario.HasIsCoop ? ((object)0) : ((object)protoScenario.IsCoop));
        AddDbfField(record, "ADVENTURE_ID", protoScenario.AdventureId);
        AddDbfField(record, "MODE_ID", !protoScenario.HasAdventureModeId ? null : ((object)protoScenario.AdventureModeId));
        AddDbfField(record, "WING_ID", protoScenario.WingId);
        AddDbfField(record, "SORT_ORDER", protoScenario.SortOrder);
        AddDbfField(record, "CLIENT_PLAYER2_HERO_CARD_ID", !protoScenario.HasClientPlayer2HeroCardId ? null : ((object)((int)protoScenario.ClientPlayer2HeroCardId)));
        AddDbfField(record, "TB_TEXTURE", protoScenario.TavernBrawlTexture);
        AddDbfField(record, "TB_TEXTURE_PHONE", protoScenario.TavernBrawlTexturePhone);
        AddDbfField(record, "TB_TEXTURE_PHONE_OFFSET_Y", !protoScenario.HasTavernBrawlTexturePhoneOffset ? null : ((object)protoScenario.TavernBrawlTexturePhoneOffset.Y));
        AddLocStrings(record, protoScenario.Strings);
        return(record);
    }
 protected override void OnDataSet(bool updateVisuals)
 {
     if (updateVisuals)
     {
         this.m_BoosterPackBone.gameObject.SetActive(false);
         BoosterPackRewardData data = base.Data as BoosterPackRewardData;
         string headline            = string.Empty;
         string details             = string.Empty;
         string source = string.Empty;
         if (base.Data.Origin == NetCache.ProfileNotice.NoticeOrigin.OUT_OF_BAND_LICENSE)
         {
             headline = GameStrings.Get("GLOBAL_REWARD_BOOSTER_HEADLINE_OUT_OF_BAND");
             object[] args = new object[] { data.Count };
             source = GameStrings.Format("GLOBAL_REWARD_BOOSTER_DETAILS_OUT_OF_BAND", args);
         }
         else if (data.Count <= 1)
         {
             string key = "GLOBAL_REWARD_BOOSTER_HEADLINE_GENERIC";
             headline = GameStrings.Get(key);
         }
         else
         {
             object[] objArray2 = new object[] { data.Count };
             headline = GameStrings.Format("GLOBAL_REWARD_BOOSTER_HEADLINE_MULTIPLE", objArray2);
         }
         base.SetRewardText(headline, details, source);
         DbfRecord record = GameDbf.Booster.GetRecord(data.Id);
         if (record != null)
         {
             base.SetReady(false);
             string assetName = record.GetAssetName("PACK_OPENING_PREFAB");
             AssetLoader.Get().LoadActor(assetName, new AssetLoader.GameObjectCallback(this.OnUnopenedPackPrefabLoaded), null, false);
         }
     }
 }
        /// <summary>
        /// получение полезного отпуска (FORMAB71)
        /// </summary>
        /// <returns></returns>
        private ElectricitySupply ParseElectricitySupplyRecord(DbfRecord record)
        {
            ElectricitySupply electricitySupply = new();

            if (record != null)
            {
                int      currYear = DateTime.Now.Year;
                DateOnly period   = ConvertToDateOnly(record.GetValue <DateTime>("DATE_N"));
                if (period.Year == currYear || period.Year == currYear - 1)
                {
                    try
                    {
                        electricitySupply.ДатаОплаты          = ConvertToDateOnly(record.GetValue <DateTime>("DATE_OPL"));
                        electricitySupply.ОплаченныеПоказания = record.GetValue <int>("DATA_OPL");

                        electricitySupply.Период                 = period.AddMonths(-1); // оплата на месяц позже
                        electricitySupply.Лицевой                = ConvertToULong(record.GetString("LIC_SCH"));
                        electricitySupply.Полезный_отпуск        = record.GetValue <int>("POLOT");
                        electricitySupply.Задолженность          = record.GetValue <int>("KVT_ZADOL");
                        electricitySupply.Тип_населённого_пункта = record.GetString("TIP");
                    }
                    catch (Exception ex)
                    {
                        logger?.Error($">>> TMP.WORK.AramisChetchiki.Repository>GetSelectedDepartamentData->electricitySupplyTable\n>>>: {TMPApp.GetExceptionDetails(ex)}");
                    }

                    /*
                     *                           System.Data.DataRow[] abonents = electricitySupplyRow.GetChildRows("ПО_абонент");
                     *
                     * if (abonents != null && abonents.Length != 0)
                     * {
                     *  DataRow abonent = abonents[0];
                     *  electricitySupply.Населённый_пункт = _getChildRelationValue(abonent, "населенный_пункт", "TOWN");
                     *  electricitySupply.Адрес = string.Join(", ", new string[]
                     *  {
                     * _getChildRelationValue(abonent, "улицы", "STREET"),
                     * _getString(abonent["HOME"]),
                     * _getString(abonent["KV"])
                     *  });
                     *
                     *  var fider10Rows = abonent.GetChildRows("фидер10");
                     *  if (fider10Rows.Length > 0)
                     *  {
                     *      var fider10 = fider10Rows[0];
                     *      s = _getString(fider10["ФИДЕР"]);
                     *      electricitySupply.Фидер10 = String.IsNullOrWhiteSpace(s) ? String.Empty : _getString(fider10["НАИМЕНОВ"]) + "-" + s;
                     *      electricitySupply.Подстанция = _getChildRelationValue(fider10, "подстанция", "НАИМЕНОВ");
                     *  }
                     *  electricitySupply.ТП = _getChildRelationValue(abonent, "тп", "НАИМЕНОВ");
                     *  electricitySupply.Фидер04 = _getString(abonent["ФИДЕР"]);
                     * }
                     * */
                }
            }
            else
            {
            }

            return(electricitySupply);
        }
 private ASKONTR ParseASKONTRRecord(DbfRecord record)
 {
     return(new
            (
                record.GetString("КОД_КОН"),
                record.GetString("ФАМИЛИЯ")));
 }
Esempio n. 10
0
        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
        }
Esempio n. 11
0
    public bool ShowABanner(DelOnCloseBanner callback = null)
    {
        int displayBannerId = this.GetDisplayBannerId();

        if (this.m_seenBanners.Contains(displayBannerId))
        {
            return(false);
        }
        if (displayBannerId == 0)
        {
            return(false);
        }
        DbfRecord record    = GameDbf.Banner.GetRecord(displayBannerId);
        string    assetPath = (record != null) ? record.GetAssetName("PREFAB") : null;

        if ((record == null) || (assetPath == null))
        {
            Debug.LogWarning(string.Format("No banner defined for bannerID={0}", displayBannerId));
            return(false);
        }
        BannerPopup popup = GameUtils.LoadGameObjectWithComponent <BannerPopup>(assetPath);

        if (popup == null)
        {
            return(false);
        }
        this.AcknowledgeBanner(displayBannerId);
        popup.Show(record.GetLocString("TEXT"), callback);
        return(true);
    }
    public List <DbfRecord> GetRecords(IEnumerable <int> ids)
    {
        if (ids == null)
        {
            return(null);
        }
        List <DbfRecord> list = new List <DbfRecord>();

        for (int i = 0; i < this.m_records.Count; i++)
        {
            DbfRecord         item       = this.m_records[i];
            IEnumerator <int> enumerator = ids.GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    if (enumerator.Current == item.GetId())
                    {
                        list.Add(item);
                        continue;
                    }
                }
            }
            finally
            {
                if (enumerator == null)
                {
                }
                enumerator.Dispose();
            }
        }
        return(list);
    }
Esempio n. 13
0
        /// <summary>
        /// find reference of function name in dbf
        /// </summary>
        /// <param name="path"></param>
        /// <param name="functionName"></param>
        /// <returns></returns>
        private static int FunctionRefExistsInDBF(string path, string functionName)
        {
            var skipDeleted = true;

            //DbfDataReader.DbfDataReader reader = new DbfDataReader.DbfDataReader(kvp.Key);
            using (var dbfTable = new DbfTable(path, System.Text.Encoding.UTF8))
            {
                try
                {
                    var dbfRecord = new DbfRecord(dbfTable);
                    var found     = 0;
                    while (dbfTable.Read(dbfRecord))
                    {
                        if (skipDeleted && dbfRecord.IsDeleted)
                        {
                            continue;
                        }

                        if (dbfRecord.Values.Any(s => s.GetValue().ToString().Contains(functionName)))
                        {
                            found++;
                            break;
                        }
                    }
                    return(found);
                }
                catch (Exception ex)
                {
                    log.Error("error:", ex);
                    return(0);
                }
            }
        }
Esempio n. 14
0
        public void IsDataCorrect()
        {
            DbfFile dbfFile = new DbfFile(encoding);

            dbfFile.Open(dbfFileName, FileMode.Open);
            DbfRecord orec = new DbfRecord(dbfFile.Header);

            Assert.IsTrue(dbfFile.ReadNext(orec));


            Assert.AreEqual(DbfColumn.DbfColumnType.Character, orec.Column(0).ColumnType);
            Assert.AreEqual(DbfColumn.DbfColumnType.Number, orec.Column(1).ColumnType);
            Assert.AreEqual(DbfColumn.DbfColumnType.Date, orec.Column(2).ColumnType);

            // DBF возвращает строки такой длины, какая указана в хедерах при создании
            string fio = "Ivanov Ivan Ivanovich";

            Assert.AreEqual(fio + new String(' ', 40 - fio.Length), orec[0]);

            string num = "12.3456";

            Assert.AreEqual(new String(' ', 10 - num.Length) + num, orec[1]);

            Assert.AreEqual("20011122", orec[2]);
        }
Esempio n. 15
0
    public DbfRecord GetCardRecord(string cardId)
    {
        DbfRecord record = null;

        this.m_cardsByCardId.TryGetValue(cardId, out record);
        return(record);
    }
 private KartKat ParseKartKatRecord(DbfRecord record)
 {
     return(new
            (
                record.GetString("COD_KAT"),
                record.GetString("KATEGAB")));
 }
Esempio n. 17
0
        private List <fakeDB> GetFakeDBs()
        {
            var fakeDBs = new List <fakeDB>();

            var        dbfPath = "../../SvgFile/Seoul.dbf";
            List <int> list    = new List <int>();

            for (i = 0; i < 500; i++)
            {
                list.Add(i);
            }

            using (var dbf = new DbfTable(dbfPath, DbfDataReader.EncodingProvider.UTF8))
            {
                var dbfRecord = new DbfRecord(dbf);
                i = 0;
                while (dbf.Read(dbfRecord))//480번 반복
                {
                    fakeDB fakeDB = new fakeDB();
                    fakeDB.emd_cd = int.Parse(dbfRecord.Values[0].ToString());
                    fakeDB.eng    = dbfRecord.Values[1].ToString();
                    fakeDB.val1   = int.Parse(dbfRecord.Values[3].ToString());
                    //fakeDB.val1 = list[i++];
                    fakeDB.val2 = int.Parse(dbfRecord.Values[4].ToString());
                    fakeDB.val3 = int.Parse(dbfRecord.Values[5].ToString());
                    fakeDBs.Add(fakeDB);
                }
            }
            return(fakeDBs);
        }
 private KartIsp ParseKartIspRecord(DbfRecord record)
 {
     return(new
            (
                record.GetString("COD_ISP"),
                record.GetString("ISPIEM")));
 }
    public bool CanOpenPack()
    {
        SpecialEventType type;

        NetCache.BoosterStack boosterStack = this.GetBoosterStack();
        if (boosterStack == null)
        {
            return(false);
        }
        DbfRecord record = GameDbf.Booster.GetRecord(boosterStack.Id);

        if (record == null)
        {
            return(false);
        }
        string val = string.Empty;

        if (!record.TryGetString("OPEN_PACK_EVENT", out val))
        {
            return(false);
        }
        if (!EnumUtils.TryGetEnum <SpecialEventType>(val, out type))
        {
            return(false);
        }
        return((type == SpecialEventType.IGNORE) || SpecialEventManager.Get().IsEventActive(type, false));
    }
 private KartTpr ParseKartTprRecord(DbfRecord record)
 {
     return(new
            (
                record.GetString("COD_TPR"),
                record.GetString("TPRIEM")));
 }
        public ShapefileDataReader(string path, IGeometryFactory geometryFactory = null, GeometryTransform transform = null)
            : base(path, geometryFactory, transform)
        {
            _dbf = DbfFile.Open(Path.ChangeExtension(path, ".dbf"));

            _currentRecord = new DbfRecord(_dbf.Header);
        }
Esempio n. 22
0
    public DbfRecord GetCardRecord(int dbId)
    {
        DbfRecord record = null;

        this.m_cardsByDbId.TryGetValue(dbId, out record);
        return(record);
    }
Esempio n. 23
0
        private static void PrintCsv(Options options)
        {
            var encoding = GetEncoding();

            using (var dbfTable = new DbfTable(options.Filename, encoding))
            {
                var columnNames = string.Join(",", dbfTable.Columns.Select(c => c.ColumnName));
                if (!options.SkipDeleted)
                {
                    columnNames += ",Deleted";
                }

                Console.WriteLine(columnNames);

                var dbfRecord = new DbfRecord(dbfTable);

                while (dbfTable.Read(dbfRecord))
                {
                    if (options.SkipDeleted && dbfRecord.IsDeleted)
                    {
                        continue;
                    }

                    var values = string.Join(",", dbfRecord.Values.Select(v => EscapeValue(v)));
                    if (!options.SkipDeleted)
                    {
                        values += $",{dbfRecord.IsDeleted}";
                    }

                    Console.WriteLine(values);
                }
            }
        }
Esempio n. 24
0
        protected void ValidateRowValues(string path)
        {
            var dbfRecord = new DbfRecord(DbfTable);

            using (var textReader = File.OpenText(path))
                using (var csvParser = new CsvParser(textReader, CultureInfo.InvariantCulture))
                {
                    csvParser.Read();

                    var row = 1;
                    while (DbfTable.Read(dbfRecord))
                    {
                        csvParser.Read();

                        var index = 0;
                        foreach (var dbfValue in dbfRecord.Values)
                        {
                            var value    = dbfValue.ToString();
                            var csvValue = csvParser[index];
                            value.ShouldBe(csvValue, $"Row: {row}, column: {index} ({DbfTable.Columns[index].ColumnName})", StringCompareShould.IgnoreLineEndings);

                            index++;
                        }

                        row++;
                    }
                }
        }
        /// <summary>
        /// open pgdynobject.dbf to get ANs
        /// </summary>
        /// <param name="path"></param>
        private void GetPageAns(string path)
        {
            using (var dbfTable = new DbfTable(path, System.Text.Encoding.UTF8))
            {
                var skipDeleted = true;
                var dbfRecord   = new DbfRecord(dbfTable);

                var cols     = dbfTable.Columns.ToList();
                var ANColIdx = 0;
                if (cols.FirstOrDefault(s => s.Name.Contains("AN")) != null)
                {
                    ANColIdx = cols.FirstOrDefault(s => s.Name.Contains("AN")).Index;
                }

                while (dbfTable.Read(dbfRecord))
                {
                    if (skipDeleted && dbfRecord.IsDeleted)
                    {
                        continue;
                    }

                    //get citectpage object from list
                    var citectPage = CitectPages.Find(s => s.PageName.Equals(dbfRecord.GetValue(0).ToString()));
                    citectPage.ObjectANs.Add(int.Parse(dbfRecord.GetValue(ANColIdx).ToString()));
                }
            }
        }
Esempio n. 26
0
        protected void ValidateRowValues(string path)
        {
            var dbfRecord = new DbfRecord(DbfTable);

            using (var textReader = File.OpenText(path))
                using (var csvParser = new CsvParser(textReader))
                {
                    csvParser.Read();

                    var row = 1;
                    while (DbfTable.Read(dbfRecord))
                    {
                        var csvValues = csvParser.Read();

                        var index = 0;
                        foreach (var dbfValue in dbfRecord.Values)
                        {
                            var value    = dbfValue.ToString();
                            var csvValue = csvValues[index++];
                            value.ShouldBe(csvValue, $"Row: {row}, column: {index}");
                        }

                        row++;
                    }
                }
        }
Esempio n. 27
0
        private static void TestReadHttpConn()
        {
            //Open a web file...
            //-------------------------------------
            var oWebDBF  = new DbfFile(Encoding.GetEncoding(1252));
            var oWebFile = new WebClient();

            oWebDBF.Open(oWebFile.OpenRead("http://private.socialexplorer.com/State_vars1.dbf"));

            //read and print records to screen...
            var orecWeb = new DbfRecord(oWebDBF.Header);

            var ofs2 = new FileStream(Path.Combine(TestPath, "Webfile.txt"), FileMode.Create);
            var osw2 = new StreamWriter(ofs2);

            bool bIsForwardOnly = oWebDBF.IsForwardOnly;
            bool bIsReadOnly    = oWebDBF.IsReadOnly;

            while (oWebDBF.ReadNext(orecWeb))
            {
                osw2.WriteLine("index: " + orecWeb.RecordIndex + ": " + orecWeb);
            }

            osw2.Flush();
            osw2.Close();

            oWebDBF.Close();
        }
    private void Start()
    {
        DbfRecord record = GameDbf.Scenario.GetRecord(this.m_missionId);

        if (record == null)
        {
            object[] messageArgs = new object[] { this.m_missionId };
            Error.AddDevWarning("Error", "scenario {0} does not exist in the DBF", messageArgs);
        }
        else
        {
            if (this.m_name != null)
            {
                this.m_name.Text = record.GetLocString("SHORT_NAME");
            }
            int @int = record.GetInt("CLIENT_PLAYER2_HERO_CARD_ID");
            if (@int == 0)
            {
                @int = record.GetInt("PLAYER2_HERO_CARD_ID");
            }
            string cardId = GameUtils.TranslateDbIdToCardId(@int);
            if (cardId != null)
            {
                DefLoader.Get().LoadCardDef(cardId, new DefLoader.LoadDefCallback <CardDef>(this.OnCardDefLoaded), null, null);
            }
        }
    }
Esempio n. 29
0
    private string GetGameTypeName(GameType gameType, int missionId)
    {
        DbfRecord adventureRecord = GameUtils.GetAdventureRecord(missionId);

        if (adventureRecord == null)
        {
            string str;
            if (this.m_gameTypeNameKeys.TryGetValue(gameType, out str))
            {
                return(GameStrings.Get(str));
            }
            object[] messageArgs = new object[] { missionId, gameType };
            Error.AddDevFatal("ReconnectMgr.GetGameTypeName() - no name for mission {0} gameType {1}", messageArgs);
            return(string.Empty);
        }
        switch (adventureRecord.GetInt("ID"))
        {
        case 1:
            return(GameStrings.Get("GLUE_RECONNECT_GAME_TYPE_TUTORIAL"));

        case 2:
            return(GameStrings.Get("GLUE_RECONNECT_GAME_TYPE_PRACTICE"));

        case 3:
            return(GameStrings.Get("GLUE_RECONNECT_GAME_TYPE_NAXXRAMAS"));

        case 4:
            return(GameStrings.Get("GLUE_RECONNECT_GAME_TYPE_BRM"));

        case 7:
            return(GameStrings.Get("GLUE_RECONNECT_GAME_TYPE_TAVERN_BRAWL"));
        }
        return(adventureRecord.GetLocString("NAME"));
    }
Esempio n. 30
0
        private static void DbfTestWrite(string filepath)
        {
            //编码Encoding.UTF8 中文字符占三字节 Encoding.GetEncoding(936) Encoding.Default中文字符占二字节
            var odbf = new DbfFile(Encoding.GetEncoding(936));

            odbf.Open(filepath, FileMode.Create);//FileMode.Create OpenOrCreate
            //创建列头
            //odbf.Header.AddColumn(new DbfColumn("编号", DbfColumn.DbfColumnType.Character, 20, 0));
            //odbf.Header.AddColumn(new DbfColumn("名称", DbfColumn.DbfColumnType.Character, 20, 0));
            //odbf.Header.AddColumn(new DbfColumn("地址", DbfColumn.DbfColumnType.Character, 20, 0));
            //odbf.Header.AddColumn(new DbfColumn("时间", DbfColumn.DbfColumnType.Date));
            //odbf.Header.AddColumn(new DbfColumn("余额", DbfColumn.DbfColumnType.Number, 15, 3));

            //var orec = new DbfRecord(odbf.Header) { AllowDecimalTruncate = true };
            //List<User> list = User.GetList();
            ////foreach (var item in list)
            ////{
            //User item=list[0];
            //    orec[0] = item.UserCode;
            //    orec[1] = item.UserName;
            //    orec[2] = item.Address;
            //    orec[3] = item.date.ToString("yyyy-MM-dd HH:mm:ss");
            //    orec[4] = item.money.ToString();
            //    odbf.Write(orec, true);
            ////}

            //写入边界
            //odbf.Header.AddColumn(new DbfColumn("id", DbfColumn.DbfColumnType.Number, 19, 0));
            //var orec = new DbfRecord(odbf.Header) { AllowDecimalTruncate = true };
            //orec[0] = 1.ToString();
            //odbf.Write(orec, true);

            //写入图斑
            odbf.Header.AddColumn(new DbfColumn("图斑编码", DbfColumn.DbfColumnType.Character, 80, 0));
            odbf.Header.AddColumn(new DbfColumn("措施代码", DbfColumn.DbfColumnType.Character, 80, 0));
            odbf.Header.AddColumn(new DbfColumn("措施名称", DbfColumn.DbfColumnType.Character, 80, 0));
            odbf.Header.AddColumn(new DbfColumn("利用现状", DbfColumn.DbfColumnType.Character, 80, 0));
            odbf.Header.AddColumn(new DbfColumn("措施数量", DbfColumn.DbfColumnType.Number, 18, 15));
            odbf.Header.AddColumn(new DbfColumn("坡度", DbfColumn.DbfColumnType.Number, 18, 15));

            var orec = new DbfRecord(odbf.Header)
            {
                AllowDecimalTruncate = true
            };
            List <MapPolygon> list = MapPolygon.GetList();

            foreach (var item in list)
            {
                //MapPolygon item = list[0];
                orec[0] = item.Code;//顺序要与header顺序保持一致
                orec[1] = item.Mark;
                orec[2] = item.Name;
                orec[3] = item.State;
                orec[4] = item.Number.ToString();
                orec[5] = item.Slope.ToString();
                odbf.Write(orec, true);
            }
            odbf.Close();
        }