//获得管线的属性字段和信息 private void GetWaterLineValue(out string var1, out string var2, out string var3, out string var4, out string var5) { IFields pFields = pFeatureWaterLine.Fields; var1 = pFeatureWaterLine.get_Value(pFields.FindField("WATER_ID")).ToString(); var2 = pFeatureWaterLine.get_Value(pFields.FindField("PIPEUSE_CODE")).ToString(); var3 = pFeatureWaterLine.get_Value(pFields.FindField("SHAPE_LENGTH")).ToString(); var4 = pFeatureWaterLine.get_Value(pFields.FindField("PWDIAM")).ToString(); var5 = pFeatureWaterLine.get_Value(pFields.FindField("PWMATERIAL")).ToString(); //根据子类型代码获得子类型名称 ISubtypes pWaterLineSubtypes = pFeatLayerWaterLines.FeatureClass as ISubtypes; IRowSubtypes pRowSubtypes = pFeatureWaterLine as IRowSubtypes; if (pRowSubtypes != null) { var2 = pWaterLineSubtypes.get_SubtypeName(pRowSubtypes.SubtypeCode); //获取属性域 IDomain pDomain = pWaterLineSubtypes.get_Domain(pRowSubtypes.SubtypeCode, "PWMATERIAL"); if (pDomain != null) { ICodedValueDomain pCodedValDomain = pDomain as ICodedValueDomain; for (int i = 0; i <= pCodedValDomain.CodeCount - 1; i++) { if (pCodedValDomain.get_Value(i) == var5) { var5 = pCodedValDomain.get_Name(i); } } } } }
private void Init() { this.gridControl1.Focus(); this.m_pVertXtraGrid.Clear(); int rowHandle = -1; if (this.m_pObject == null) { this.m_CanDo = true; } else { this.toolStripDropDownButton1.DropDownItemClicked += new ToolStripItemClickedEventHandler(this.toolStripDropDownButton1_DropDownItemClicked); try { ITableAttachments attachments = (ITableAttachments)this.m_pObject.Class; if (attachments != null) { if (attachments.HasAttachments) { this.toolStrip1.Visible = true; this.InitAttachment(); } else { this.toolStrip1.Visible = false; } } } catch { } IFields fields = this.m_pObject.Fields; string[] strArray = new string[2]; ISubtypes subtypes = this.m_pObject.Class as ISubtypes; IDomain domain = null; for (int i = 0; i < fields.FieldCount; i++) { IField pField = fields.get_Field(i); if (this.CheckFieldIsVisible(this.m_pFeatureLayer, pField)) { strArray[0] = pField.AliasName; if (pField.Type == esriFieldType.esriFieldTypeGeometry) { strArray[1] = this.GetShapeString(pField); this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true); } else if (pField.Type == esriFieldType.esriFieldTypeOID) { strArray[1] = this.m_pObject.OID.ToString(); this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true); } else if (pField.Type == esriFieldType.esriFieldTypeBlob) { strArray[1] = "<二进制数据>"; this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true); } else { int num4; double minValue; double maxValue; object obj2 = this.m_pObject.get_Value(i); ICodedValueDomain domain2 = null; IList list = new ArrayList(); if ((subtypes != null) && subtypes.HasSubtype) { if (subtypes.SubtypeFieldName == pField.Name) { int num3; try { strArray[1] = subtypes.get_SubtypeName((this.m_pObject as IRowSubtypes).SubtypeCode); } catch { strArray[1] = obj2.ToString(); } IEnumSubtype subtype = subtypes.Subtypes; subtype.Reset(); for (string str = subtype.Next(out num3); str != null; str = subtype.Next(out num3)) { list.Add(str); } this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list, !this.FieldCanEdit(pField)); } else { domain = subtypes.get_Domain((this.m_pObject as IRowSubtypes).SubtypeCode, pField.Name); if (domain is ICodedValueDomain) { domain2 = domain as ICodedValueDomain; if (pField.IsNullable) { list.Add("<空>"); } strArray[1] = obj2.ToString(); num4 = 0; while (num4 < domain2.CodeCount) { list.Add(domain2.get_Name(num4)); if (obj2.ToString() == domain2.get_Value(num4).ToString()) { strArray[1] = domain2.get_Name(num4); } num4++; } this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list, !this.FieldCanEdit(pField)); } else if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) || (pField.Type == esriFieldType.esriFieldTypeSingle)) || (pField.Type == esriFieldType.esriFieldTypeDouble)) || (pField.Type == esriFieldType.esriFieldTypeInteger)) { minValue = 0.0; maxValue = 0.0; if (domain is IRangeDomain) { minValue = (double)(domain as IRangeDomain).MinValue; maxValue = (double)(domain as IRangeDomain).MaxValue; } if (pField.Editable) { this.m_pVertXtraGrid.AddSpinEdit(strArray[0], obj2, false, minValue, maxValue); } else { this.m_pVertXtraGrid.AddTextEdit(strArray[0], obj2, true); } } else if (pField.Type == esriFieldType.esriFieldTypeDate) { this.m_pVertXtraGrid.AddDateEdit(strArray[0], obj2, !this.FieldCanEdit(pField)); } else { strArray[1] = obj2.ToString(); this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], !this.FieldCanEdit(pField)); } } } else { domain = pField.Domain; if (domain != null) { if (domain is ICodedValueDomain) { domain2 = domain as ICodedValueDomain; if (pField.IsNullable) { list.Add("<空>"); } strArray[1] = obj2.ToString(); num4 = 0; while (num4 < domain2.CodeCount) { list.Add(domain2.get_Name(num4)); if (obj2.ToString() == domain2.get_Value(num4).ToString()) { strArray[1] = domain2.get_Name(num4); } num4++; } this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list, !this.FieldCanEdit(pField)); } else if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) || (pField.Type == esriFieldType.esriFieldTypeSingle)) || (pField.Type == esriFieldType.esriFieldTypeDouble)) || (pField.Type == esriFieldType.esriFieldTypeInteger)) { minValue = 0.0; maxValue = 0.0; if (domain is IRangeDomain) { minValue = (double)(domain as IRangeDomain).MinValue; maxValue = (double)(domain as IRangeDomain).MaxValue; } if (pField.Editable) { this.m_pVertXtraGrid.AddSpinEdit(strArray[0], obj2, false, minValue, maxValue); } else { this.m_pVertXtraGrid.AddTextEdit(strArray[0], obj2, true); } } else if (pField.Type == esriFieldType.esriFieldTypeDate) { this.m_pVertXtraGrid.AddDateEdit(strArray[0], obj2, !this.FieldCanEdit(pField)); } else { strArray[1] = obj2.ToString(); this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], !this.FieldCanEdit(pField)); } } else { string name = (this.m_pObject.Class as IDataset).Name; CodeDomainEx codeDomainEx = CodeDomainManage.GetCodeDomainEx(pField.Name, name); if (codeDomainEx != null) { if ((codeDomainEx.ParentIDFieldName == null) || (codeDomainEx.ParentIDFieldName.Length == 0)) { NameValueCollection codeDomain = codeDomainEx.GetCodeDomain(); if (pField.IsNullable) { list.Add("<空>"); } strArray[1] = obj2.ToString(); for (num4 = 0; num4 < codeDomain.Count; num4++) { string str3 = codeDomain.Keys[num4]; list.Add(str3); if (obj2.ToString() == codeDomain[str3]) { strArray[1] = str3; } } this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list, !this.FieldCanEdit(pField)); } else { strArray[1] = obj2.ToString(); this.m_pVertXtraGrid.AddTreeviewComBoBox(strArray[0], codeDomainEx.FindName(strArray[1]), codeDomainEx, !this.FieldCanEdit(pField)); } } else { if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) || (pField.Type == esriFieldType.esriFieldTypeSingle)) || (pField.Type == esriFieldType.esriFieldTypeDouble)) || (pField.Type == esriFieldType.esriFieldTypeInteger)) { if (pField.Editable) { this.m_pVertXtraGrid.AddSpinEdit(strArray[0], obj2, false, 0.0, 0.0); } else { this.m_pVertXtraGrid.AddTextEdit(strArray[0], obj2, true); } } else if (pField.Type == esriFieldType.esriFieldTypeDate) { this.m_pVertXtraGrid.AddDateEdit(strArray[0], obj2, !this.FieldCanEdit(pField)); } else { strArray[1] = obj2.ToString(); this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], !this.FieldCanEdit(pField)); } if (strArray[0] == this.m_EditFeildName) { rowHandle = i; } } } } } } } if (rowHandle >= 0) { this.gridView1.SelectRow(rowHandle); } this.gridView1.Focus(); this.m_CanDo = true; base.Parent.Focus(); } }
private bool ExportTable(Excel.Workbook ExcelWbk, IMxDocument MxDoc, IStandaloneTable StandTable, ref IProgressDialog2 progressDialog, ref IStepProgressor stepProgressor, ref ITrackCancel trackCancel) { ITableProperties TableProperties = null; IEnumTableProperties EnumTableProperties = null; ITableProperty3 TableProperty = null; ITableCharacteristics TableCharacteristics = null; ITableSelection TabSel = null; IDisplayTable DisplayTable = null; ITable Table = null; IRow TabRow = null; IObjectClass ObjectClass = null; ISubtypes Subtypes = null; ITableFields TableFields = null; ICursor Cursor = null; IField CurField = null; IDomain Domain = null; ICodedValueDomain CodedValueDomain = null; object missing = null; object sheet = null; Microsoft.Office.Interop.Excel.Style style = null; try { bool UseDescriptions; int subtype; string SheetName; int Col = 0; int Row = 0; int i; int j; missing = System.Reflection.Missing.Value; sheet = ExcelWbk.Sheets[ExcelWbk.Sheets.Count]; Excel.Worksheet ExcelSheet; Excel.Range ExcelRange; //Add new Excel worksheet ExcelSheet = (Excel.Worksheet)ExcelWbk.Sheets.Add(missing, sheet, missing, missing); //style = ExcelWbk.Styles.Add("Style1"); //style.NumberFormat = "@"; //style.Font.Name = "Arial"; //style.Font.Bold = True //style.Font.Size = 12; //style.Interior.Pattern = Microsoft.Office.Interop.Excel.XlPattern.xlPattern Solid //style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlighLe ft SheetName = StandTable.Name; if (SheetName.Length > 30) { SheetName = SheetName.Substring(0, 30); } ExcelSheet.Name = SheetName; //Determine whether to use descriptions or codes for domains UseDescriptions = true; TableProperties = MxDoc.TableProperties; EnumTableProperties = (IEnumTableProperties)TableProperties; EnumTableProperties.Reset(); TableProperty = (ITableProperty3)EnumTableProperties.Next(); while (TableProperty != null) { if (TableProperty.StandaloneTable != null) { if (TableProperty.StandaloneTable.Equals(StandTable)) { TableCharacteristics = (ITableCharacteristics)TableProperty; UseDescriptions = TableCharacteristics.ShowCodedValueDomainDescriptions; break; } } TableProperty = (ITableProperty3)EnumTableProperties.Next(); } TabSel = (ITableSelection)StandTable; DisplayTable = (IDisplayTable)StandTable; Table = (ITable)DisplayTable.DisplayTable; //Get subtype info ObjectClass = Table as IObjectClass; Subtypes = ObjectClass as ISubtypes; //Get TableFields so later we can determine whether that field is visible TableFields = (ITableFields)StandTable; //loop through each field and write column headings Row = 1; for (j = 0; j < TableFields.FieldCount; j++) { CurField = TableFields.get_Field(j); //skip blob and geometry fields if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry)) { Col += 1; //Write field alias name as Excel column header ExcelSheet.Cells[Row, Col] = TableFields.get_FieldInfo(j).Alias; if (CurField.Type == esriFieldType.esriFieldTypeString) { ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[65535, Col]).EntireColumn.NumberFormat = "@"; } } } //Get all selected records for this table (use IDisplayTable to get any joined data) DisplayTable.DisplaySelectionSet.Search(null, true, out Cursor); //subtype = Subtypes.DefaultSubtypeCode; //For each selected record TabRow = Cursor.NextRow(); //stepProgressor.Step(); // progressDialog.Description = A4LGSharedFunctions.Localizer.GetString("ExportAsset") + stepProgressor.Position + A4LGSharedFunctions.Localizer.GetString("Of") + MxDoc.FocusMap.SelectionCount.ToString() + "."; while (TabRow != null) { Row += 1; if (Subtypes != null && Subtypes.HasSubtype == true && (TabRow.get_Value(Subtypes.SubtypeFieldIndex) != null)) { subtype = Convert.ToInt32(TabRow.get_Value(Subtypes.SubtypeFieldIndex)); } else { subtype = -99999; } //For each column Col = 0; for (j = 0; j < TableFields.FieldCount; j++) { CurField = TableFields.get_Field(j); //skip blob and geometry fields in data also if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry)) { Col += 1; ExcelSheet.Cells[Row, Col] = TabRow.get_Value(j); if (UseDescriptions == true && subtype == -99999) { Domain = CurField.Domain; if (Domain != null) { if (Domain.Type == esriDomainType.esriDTCodedValue) { CodedValueDomain = (ICodedValueDomain)CurField.Domain; for (i = 0; i < CodedValueDomain.CodeCount; i++) { if ((CodedValueDomain.get_Value(i)).ToString() == (TabRow.get_Value(j)).ToString()) { //System.Diagnostics.Debug.Print(CodedValueDomain.get_Name(0).ToString()); ExcelSheet.Cells[Row, Col] = CodedValueDomain.get_Name(i); i = CodedValueDomain.CodeCount; } } } } } else if (UseDescriptions == true && subtype != -99999) { if (Subtypes.SubtypeFieldIndex == j) { ExcelSheet.Cells[Row, Col] = Subtypes.get_SubtypeName(subtype); } else { Domain = Subtypes.get_Domain(subtype, CurField.Name); if ((Domain != null) && (Domain.Type == esriDomainType.esriDTCodedValue)) { CodedValueDomain = (ICodedValueDomain)Domain; for (i = 0; i < CodedValueDomain.CodeCount; i++) { if ((CodedValueDomain.get_Value(i)).ToString() == (TabRow.get_Value(j)).ToString()) { //System.Diagnostics.Debug.Print(CodedValueDomain.get_Name(0).ToString()); ExcelSheet.Cells[Row, Col] = CodedValueDomain.get_Name(i); i = CodedValueDomain.CodeCount; } } } } } } } stepProgressor.Step(); progressDialog.Description = A4LGSharedFunctions.Localizer.GetString("ExportAsset") + stepProgressor.Position + A4LGSharedFunctions.Localizer.GetString("Of") + MxDoc.FocusMap.SelectionCount.ToString() + "."; if (!trackCancel.Continue()) { return(false); } TabRow = Cursor.NextRow(); } //Hide Columns Col = 0; for (j = 0; j < TableFields.FieldCount; j++) { CurField = TableFields.get_Field(j); //skip blob and geometry fields in data also if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry)) { Col += 1; //Autofit ExcelRange = ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[Row, Col]); ExcelRange.EntireColumn.AutoFit(); //Hide column if invisible in ArcMap if (TableFields.get_FieldInfo(j).Visible == false) { ExcelRange = ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[Row, Col]); ExcelRange.EntireColumn.Hidden = true; } } } return(true); } catch { MessageBox.Show(A4LGSharedFunctions.Localizer.GetString("ExportXLError")); return(true); } finally { TableProperties = null; EnumTableProperties = null; TableProperty = null; TableCharacteristics = null; TabSel = null; DisplayTable = null; Table = null; TabRow = null; ObjectClass = null; Subtypes = null; TableFields = null; if (Cursor != null) { Marshal.ReleaseComObject(Cursor); } Cursor = null; CurField = null; Domain = null; CodedValueDomain = null; missing = null; sheet = null; style = null; } }
private bool ExportLayer(Excel.Workbook ExcelWbk, IMxDocument MxDoc, IFeatureLayer FLayer, ref IProgressDialog2 progressDialog, ref IStepProgressor stepProgressor, ref ITrackCancel trackCancel) { IFeatureClass FC = null; ISubtypes Subtypes = null; ITableProperties TableProperties = null; IEnumTableProperties EnumTableProperties = null; ITableProperty3 TableProperty = null; ITableCharacteristics TableCharacteristics = null; IFeatureSelection FeatSel = null; IDisplayTable DisplayTable = null; ITable Table = null; ILayerFields LayerFields = null; ITableFields TableFields = null; ILayer LayerTest = null; ICursor Cursor = null; IFeatureCursor FCursor = null; IField CurField = null; IDomain Domain = null; ICodedValueDomain CodedValueDomain = null; IFeature Feat = null; List <IPoint> pGeo = null; object missing = null; object sheet = null; Excel.Worksheet ExcelSheet = null; Excel.Range ExcelRange = null; Microsoft.Office.Interop.Excel.Style style = null; try { int Col = 0; int Row = 0; int i; int j; bool UseDescriptions; int subtype; string SheetName; missing = System.Reflection.Missing.Value; sheet = ExcelWbk.Sheets[ExcelWbk.Sheets.Count]; //Add new Excel worksheet ExcelSheet = (Excel.Worksheet)ExcelWbk.Sheets.Add(missing, sheet, missing, missing); SheetName = FLayer.Name; if (SheetName.Length > 30) { SheetName = SheetName.Substring(0, 30); } ExcelSheet.Name = SheetName; //style = ExcelWbk.Styles.Add("Style1"); //style.NumberFormat = "@"; LayerTest = (ILayer)FLayer; //Get Subtype info FC = FLayer.FeatureClass; Subtypes = FC as ISubtypes; //Determine whether to use descriptions or codes for domains and subtypes UseDescriptions = true; TableProperties = MxDoc.TableProperties; EnumTableProperties = (IEnumTableProperties)TableProperties; EnumTableProperties.Reset(); TableProperty = (ITableProperty3)EnumTableProperties.Next(); while (TableProperty != null && TableProperty.Layer != null) //Fixed { if (TableProperty.Layer.Equals(LayerTest)) { TableCharacteristics = (ITableCharacteristics)TableProperty; UseDescriptions = TableCharacteristics.ShowCodedValueDomainDescriptions; } TableProperty = (ITableProperty3)EnumTableProperties.Next(); } FeatSel = (IFeatureSelection)FLayer; DisplayTable = (IDisplayTable)FLayer; Table = (ITable)DisplayTable.DisplayTable; //Get TableFields so later we can determine whether that field is visible LayerFields = (ILayerFields)FLayer; TableFields = (ITableFields)FLayer; //loop through each field and write column headings Row = 1; for (j = 0; j < TableFields.FieldCount; j++) { CurField = TableFields.get_Field(j); //skip blob and geometry fields if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry)) { Col += 1; //Write field alias name as Excel column header ExcelSheet.Cells[Row, Col] = TableFields.get_FieldInfo(j).Alias; if (CurField.Type == esriFieldType.esriFieldTypeString) { ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[65535, Col]).EntireColumn.NumberFormat = "@"; } } } Col += 1; ExcelSheet.Cells[Row, Col] = "X_COORD"; Col += 1; ExcelSheet.Cells[Row, Col] = "Y_COORD"; Col += 1; ExcelSheet.Cells[Row, Col] = "Lat"; Col += 1; ExcelSheet.Cells[Row, Col] = "Long"; IField pFieldTest = FLayer.FeatureClass.Fields.get_Field(FLayer.FeatureClass.Fields.FindField(FLayer.FeatureClass.ShapeFieldName)); IGeometryDef pGeometryDefTest = null; pGeometryDefTest = pFieldTest.GeometryDef; bool bZAware = false; bool bMAware = false; //Determine if M or Z aware if (pGeometryDefTest.GeometryType == esriGeometryType.esriGeometryPoint) { bZAware = pGeometryDefTest.HasZ; bMAware = pGeometryDefTest.HasM; } if (bZAware) { Col += 1; ExcelSheet.Cells[Row, Col] = "Z_COORD"; } pFieldTest = null; pGeometryDefTest = null; //Get all selected records for this table (use IDisplayTable to get any joined data) DisplayTable.DisplaySelectionSet.Search(null, true, out Cursor); FCursor = (IFeatureCursor)Cursor; //subtype = Subtypes.DefaultSubtypeCode; //For each selected record Feat = FCursor.NextFeature(); // stepProgressor.Step(); // progressDialog.Description = A4LGSharedFunctions.Localizer.GetString("ExportAsset") + stepProgressor.Position + A4LGSharedFunctions.Localizer.GetString("Of") + MxDoc.FocusMap.SelectionCount.ToString() + "."; while (Feat != null) { Row += 1; if (Subtypes != null && Subtypes.HasSubtype == true && (Feat.get_Value(Subtypes.SubtypeFieldIndex) != null)) { subtype = Convert.ToInt32(Feat.get_Value(Subtypes.SubtypeFieldIndex)); } else { subtype = -99999; } //For each column Col = 0; for (j = 0; j < TableFields.FieldCount; j++) { CurField = TableFields.get_Field(j); //skip blob and geometry fields in data also if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry)) { Col += 1; ExcelSheet.Cells[Row, Col] = Feat.get_Value(j); if (UseDescriptions == true && subtype == -99999) { Domain = CurField.Domain; if (Domain != null) { if (Domain.Type == esriDomainType.esriDTCodedValue) { CodedValueDomain = (ICodedValueDomain)CurField.Domain; for (i = 0; i < CodedValueDomain.CodeCount; i++) { if ((CodedValueDomain.get_Value(i)).ToString() == (Feat.get_Value(j)).ToString()) { //System.Diagnostics.Debug.Print(CodedValueDomain.get_Name(0).ToString()); ExcelSheet.Cells[Row, Col] = CodedValueDomain.get_Name(i); i = CodedValueDomain.CodeCount; } } } } } else if (UseDescriptions == true && subtype != -99999) { if (Subtypes.SubtypeFieldIndex == j) { ExcelSheet.Cells[Row, Col] = Subtypes.get_SubtypeName(subtype); } else { Domain = Subtypes.get_Domain(subtype, CurField.Name); if ((Domain != null) && (Domain.Type == esriDomainType.esriDTCodedValue)) { CodedValueDomain = (ICodedValueDomain)Domain; for (i = 0; i < CodedValueDomain.CodeCount; i++) { if ((CodedValueDomain.get_Value(i)).ToString() == (Feat.get_Value(j)).ToString()) { //System.Diagnostics.Debug.Print(CodedValueDomain.get_Name(0).ToString()); ExcelSheet.Cells[Row, Col] = CodedValueDomain.get_Name(i); i = CodedValueDomain.CodeCount; } } } } } } } if (Feat.Shape != null) { if (Feat.Shape.IsEmpty == false) { pGeo = Globals.GetGeomCenter(Feat.Shape); if (pGeo != null) { if (pGeo.Count > 0) { if (pGeo[0].X != null) { ExcelSheet.Cells[Row, Col + 1] = pGeo[0].X; } if (pGeo[0].Y != null) { ExcelSheet.Cells[Row, Col + 2] = pGeo[0].Y; } if (pGeo[0] != null) { pGeo[0].Project(srWGS84); ExcelSheet.Cells[Row, Col + 3] = pGeo[0].Y; ExcelSheet.Cells[Row, Col + 4] = pGeo[0].X; } if (bZAware) { ExcelSheet.Cells[Row, Col + 5] = pGeo[0].Z; } } } } } stepProgressor.Step(); progressDialog.Description = A4LGSharedFunctions.Localizer.GetString("ExportAsset") + stepProgressor.Position + A4LGSharedFunctions.Localizer.GetString("Of") + MxDoc.FocusMap.SelectionCount.ToString() + "."; if (!trackCancel.Continue()) { return(false); } Feat = FCursor.NextFeature(); } //Hide Columns Col = 0; for (j = 0; j < TableFields.FieldCount; j++) { CurField = TableFields.get_Field(j); //skip blob and geometry fields in data also if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry)) { Col += 1; //Autofit ExcelRange = ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[Row, Col]); ExcelRange.EntireColumn.AutoFit(); //Hide column if invisible in ArcMap if (TableFields.get_FieldInfo(j).Visible == false) { ExcelRange = ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[Row, Col]); ExcelRange.EntireColumn.Hidden = true; } } } return(true); } catch { MessageBox.Show(A4LGSharedFunctions.Localizer.GetString("ExportXLError")); return(true); } finally { FC = null; Subtypes = null; TableProperties = null; if (EnumTableProperties != null) { Marshal.ReleaseComObject(EnumTableProperties); } EnumTableProperties = null; TableProperty = null; TableCharacteristics = null; FeatSel = null; DisplayTable = null; Table = null; LayerFields = null; TableFields = null; LayerTest = null; if (Cursor != null) { Marshal.ReleaseComObject(Cursor); } Cursor = null; if (FCursor != null) { Marshal.ReleaseComObject(FCursor); } FCursor = null; CurField = null; Domain = null; CodedValueDomain = null; Feat = null; pGeo = null; missing = null; sheet = null; ExcelSheet = null; ExcelRange = null; style = null; } }
private void cboLayer_SelectedIndexChanged(object sender, EventArgs e) { this.m_pVertXtraGrid.Clear(); if (this.cboLayer.SelectedIndex != -1) { LayerObject selectedItem = this.cboLayer.SelectedItem as LayerObject; IFeatureLayer pLayer = selectedItem.Layer as IFeatureLayer; this.m_pFeatLayer = pLayer; if (pLayer != null) { ICursor cursor; (pLayer as IFeatureSelection).SelectionSet.Search(null, false, out cursor); IList <IRow> pLists = new List <IRow>(); for (IRow row = cursor.NextRow(); row != null; row = cursor.NextRow()) { pLists.Add(row); } ComReleaser.ReleaseCOMObject(cursor); IFields fields = pLayer.FeatureClass.Fields; string[] strArray = new string[2]; ISubtypes featureClass = pLayer.FeatureClass as ISubtypes; IDomain domain = null; for (int i = 0; i < fields.FieldCount; i++) { IField pField = fields.get_Field(i); if (this.CheckFieldIsVisible(pLayer, pField)) { strArray[0] = pField.AliasName; if (pField.Type == esriFieldType.esriFieldTypeGeometry) { strArray[1] = this.GetShapeString(pField); this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true); } else if (pField.Type == esriFieldType.esriFieldTypeBlob) { strArray[1] = "<二进制数据>"; this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true); } else if ((pField.Type != esriFieldType.esriFieldTypeOID) && pField.Editable) { int num3; double minValue; double maxValue; ICodedValueDomain domain2 = null; IList list2 = new ArrayList(); if ((featureClass != null) && featureClass.HasSubtype) { if (featureClass.SubtypeFieldName == pField.Name) { int num2; if (this.CheckValueIsEqual(pLists, i)) { object obj4 = pLists[0].get_Value(i); if (obj4 is DBNull) { strArray[1] = "<空>"; } else { try { strArray[1] = featureClass.get_SubtypeName( (pLists[0] as IRowSubtypes).SubtypeCode); } catch { strArray[1] = obj4.ToString(); } } } else { strArray[1] = "<空>"; } IEnumSubtype subtypes = featureClass.Subtypes; subtypes.Reset(); for (string str = subtypes.Next(out num2); str != null; str = subtypes.Next(out num2)) { list2.Add(str); } this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list2, !pField.Editable); } else { domain = featureClass.get_Domain((pLists[0] as IRowSubtypes).SubtypeCode, pField.Name); if (domain is ICodedValueDomain) { domain2 = domain as ICodedValueDomain; if (pField.IsNullable) { list2.Add("<空>"); } if (this.CheckValueIsEqual(pLists, i)) { strArray[1] = pLists[0].get_Value(i).ToString(); } else { strArray[1] = "<空>"; } num3 = 0; while (num3 < domain2.CodeCount) { list2.Add(domain2.get_Name(num3)); if (strArray[1] == domain2.get_Value(num3).ToString()) { strArray[1] = domain2.get_Name(num3); } num3++; } this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list2, !pField.Editable); } else { if (this.CheckValueIsEqual(pLists, i)) { strArray[1] = pLists[0].get_Value(i).ToString(); } else { strArray[1] = "<空>"; } if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) || (pField.Type == esriFieldType.esriFieldTypeSingle)) || (pField.Type == esriFieldType.esriFieldTypeDouble)) || (pField.Type == esriFieldType.esriFieldTypeInteger)) { minValue = 0.0; maxValue = 0.0; if (domain is IRangeDomain) { minValue = (double)(domain as IRangeDomain).MinValue; maxValue = (double)(domain as IRangeDomain).MaxValue; } if (pField.Editable) { this.m_pVertXtraGrid.AddSpinEdit(strArray[0], strArray[1], false, minValue, maxValue); } else { this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true); } } else if (pField.Type == esriFieldType.esriFieldTypeDate) { this.m_pVertXtraGrid.AddDateEdit(strArray[0], strArray[1], !pField.Editable); } else { if (this.CheckValueIsEqual(pLists, i)) { strArray[1] = pLists[0].get_Value(i).ToString(); } else { strArray[1] = "<空>"; } this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], !pField.Editable); } } } } else { domain = pField.Domain; if (domain != null) { if (domain is ICodedValueDomain) { domain2 = domain as ICodedValueDomain; if (pField.IsNullable) { list2.Add("<空>"); } if (this.CheckValueIsEqual(pLists, i)) { strArray[1] = pLists[0].get_Value(i).ToString(); } else { strArray[1] = "<空>"; } num3 = 0; while (num3 < domain2.CodeCount) { list2.Add(domain2.get_Name(num3)); if (strArray[1] == domain2.get_Value(num3).ToString()) { strArray[1] = domain2.get_Name(num3); } num3++; } this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list2, !pField.Editable); } else { if (this.CheckValueIsEqual(pLists, i)) { strArray[1] = pLists[0].get_Value(i).ToString(); } else { strArray[1] = "<空>"; } if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) || (pField.Type == esriFieldType.esriFieldTypeSingle)) || (pField.Type == esriFieldType.esriFieldTypeDouble)) || (pField.Type == esriFieldType.esriFieldTypeInteger)) { minValue = 0.0; maxValue = 0.0; if (domain is IRangeDomain) { minValue = (double)(domain as IRangeDomain).MinValue; maxValue = (double)(domain as IRangeDomain).MaxValue; } if (pField.Editable) { this.m_pVertXtraGrid.AddSpinEdit(strArray[0], strArray[1], false, minValue, maxValue); } else { this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true); } } else if (pField.Type == esriFieldType.esriFieldTypeDate) { this.m_pVertXtraGrid.AddDateEdit(strArray[0], strArray[1], !pField.Editable); } else { this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], !pField.Editable); } } } else { if (this.CheckValueIsEqual(pLists, i)) { strArray[1] = pLists[0].get_Value(i).ToString(); } else { strArray[1] = "<空>"; } string name = (pLayer.FeatureClass as IDataset).Name; NameValueCollection codeDomain = CodeDomainManage.GetCodeDomain(pField.Name, name); if (codeDomain.Count > 0) { if (pField.IsNullable) { list2.Add("<空>"); } for (num3 = 0; num3 < codeDomain.Count; num3++) { string str3 = codeDomain.Keys[num3]; list2.Add(str3); if (strArray[1] == codeDomain[str3]) { strArray[1] = str3; } } this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list2, !pField.Editable); } else if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) || (pField.Type == esriFieldType.esriFieldTypeSingle)) || (pField.Type == esriFieldType.esriFieldTypeDouble)) || (pField.Type == esriFieldType.esriFieldTypeInteger)) { if (pField.Editable) { this.m_pVertXtraGrid.AddSpinEdit(strArray[0], strArray[1], false, 0.0, 0.0); } else { this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true); } } else if (pField.Type == esriFieldType.esriFieldTypeDate) { this.m_pVertXtraGrid.AddDateEdit(strArray[0], strArray[1], !pField.Editable); } else { this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], !pField.Editable); } } } } } } } } }
private string method_7(IRow irow_0, IField ifield_0, int int_0) { int num; string str = irow_0.get_Value(int_0).ToString(); ISubtypes table = irow_0.Table as ISubtypes; ICodedValueDomain domain = null; IList list = new ArrayList(); IDomain domain2 = null; if ((table != null) && table.HasSubtype) { if (table.SubtypeFieldName == ifield_0.Name) { try { str = table.get_SubtypeName((irow_0 as IRowSubtypes).SubtypeCode); } catch { } } else { domain2 = table.get_Domain((irow_0 as IRowSubtypes).SubtypeCode, ifield_0.Name); if (domain2 is ICodedValueDomain) { domain = domain2 as ICodedValueDomain; if (ifield_0.IsNullable) { list.Add("<空>"); } num = 0; while (num < domain.CodeCount) { if (str == domain.get_Value(num).ToString()) { str = domain.get_Name(num); break; } num++; } } } } domain2 = ifield_0.Domain; if (domain2 != null) { if (domain2 is ICodedValueDomain) { domain = domain2 as ICodedValueDomain; num = 0; while (num < domain.CodeCount) { if (str == domain.get_Value(num).ToString()) { return(domain.get_Name(num)); } num++; } } return(str); } string name = (irow_0.Table as IDataset).Name; CodeDomainEx codeDomainEx = CodeDomainManage.GetCodeDomainEx(ifield_0.Name, name); if (codeDomainEx == null) { return(str); } if ((codeDomainEx.ParentIDFieldName == null) || (codeDomainEx.ParentIDFieldName.Length == 0)) { NameValueCollection codeDomain = codeDomainEx.GetCodeDomain(); for (num = 0; num < codeDomain.Count; num++) { string str3 = codeDomain.Keys[num]; if (str == codeDomain[str3]) { str = str3; } } return(str); } return(codeDomainEx.FindName(str)); }