两个常用的功能,将shp数据属性转成TXT和Excel(转)

//转成txt 

public static void ConvertTable2Txt(ITable pTable, string pFilePath)
        {


            int pIndex = 0;

            string pStrLast = "";

            string pTxtFile = System.IO.Path.Combine(pFilePath, (pTable as IDataset).Name + ".txt");

            System.IO.FileStream pTxt1 = new System.IO.FileStream(pTxtFile, FileMode.Create);

            StreamWriter pStrW = new StreamWriter(pTxt1);

            int pFieldCount = pTable.Fields.FieldCount;

            ICursor pCursor = pTable.Search(null, false);

            IRow pRow = pCursor.NextRow();

            //写入字段

            for (int i = 0; i < pFieldCount; i++)
            {
                if (pTable.Fields.get_Field(i).Type != esriFieldType.esriFieldTypeGeometry)
                {
                    pStrLast = pStrLast + "," + pTable.Fields.get_Field(i).Name;
                }


            }

            pStrLast = pStrLast.Substring(1, pStrLast.Length - 1);

            pStrW.WriteLine(pStrLast);


            //写入值

          
            while (pRow != null)
            {
                pStrLast = "";
                pIndex++;
                for (int i = 0; i < pFieldCount; i++)
                {
                    if (pTable.Fields.get_Field(i).Type != esriFieldType.esriFieldTypeGeometry)
                    {
                        pStrLast = pStrLast+ "," + pRow.get_Value(i).ToString();
                    }

                  
                }
                pStrLast =pStrLast.Substring(1, pStrLast.Length - 1);

                    pStrW.WriteLine(pStrLast);

                if(pIndex==50)
                {
                
                    pStrW.Flush();
                    pIndex=0;
                }
               
                pRow = pCursor.NextRow();


            }
         
            pStrW.Close();

        }

//转成Excel
        public static void ConvertTable2Excel(ITable pTable, string pFilePath)
        {


            int pIndex = 1;


            string pTxtFile = System.IO.Path.Combine(pFilePath, (pTable as IDataset).Name + ".xlsx");

            int pFieldCount = pTable.Fields.FieldCount;

            ICursor pCursor = pTable.Search(null, false);

            IRow pRow = pCursor.NextRow();

            //写入字段

          Microsoft.Office.Interop.Excel.Application  pExcel = new Microsoft.Office.Interop.Excel.Application();

            pExcel.Workbooks.Add(true);

            pExcel.Visible = false;


            Workbook pWorKbook = pExcel.Workbooks[1];

           Worksheet xSheet = (Microsoft.Office.Interop.Excel.Worksheet)pWorKbook.Worksheets[1];

           xSheet.Name = (pTable as IDataset).Name;


            xSheet.SaveAs(pTxtFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);


             //字段
            for (int i = 0; i < pFieldCount; i++)
            {

                    xSheet.Cells[1, i + 1] = pTable.Fields.get_Field(i).Name;
                   
            }

        


            //写入值


            while (pRow != null)
            {
               
                pIndex++;
                for (int i = 0; i < pFieldCount; i++)
                {
                   

                    xSheet.Cells[pIndex, i + 1] = pRow.get_Value(i).ToString();
                   

                }
 

                pRow = pCursor.NextRow();


            }

            pWorKbook.Save();
            pExcel.Quit();


        }

来自:http://www.gisall.com/html/63/151663-6857.html

原文地址:https://www.cnblogs.com/gisoracle/p/3207907.html