2010-04-13 11 views
8

से सेल का पता प्राप्त कर सकते हैं मैं एक्सेल से सेल का पता उदाहरणमैं कैसे एक्सेल

के लिए एक पंक्ति और स्तंभ संख्या

पंक्ति 2 और col 3 सी 2 लौटना चाहिए दिया कैसे प्राप्त कर सकते हैं ... कृपया मदद

+0

यह भी देखें: http://stackoverflow.com/questions/181596/how-to-convert-a-column-number-eg-127-into- ए-एक्सेल-कॉलम-ए-ए – Graham

उत्तर

10

मैं वीएसटीओ सी # का बड़ा उपयोगकर्ता नहीं हूं - मैं आमतौर पर वीबीए का चयन करता हूं। हालांकि, निम्नलिखित कार्यों की जोड़ी आपके लिए उपयोगी हो सकती है। अनिश्चित वे सुव्यवस्थित किया जा सकता है, तो कुछ और:

public string RangeAddress(Excel.Range rng) 
{ 
    return rng.get_AddressLocal(false, false, Excel.XlReferenceStyle.xlA1, 
      missing, missing); 
} 
public string CellAddress(Excel.Worksheet sht, int row, int col) 
{ 
    return RangeAddress(sht.Cells[row, col]); 
} 

RangeAddress किसी भी Excel श्रेणी लेने के लिए और तुम वापस पता फेंक देते हैं। यदि आप पूर्ण शैली चाहते हैं (डॉलर के संकेतों के साथ, उदाहरण के लिए $ सी $ 3) तो आपको get_AddressLocal कॉल के पहले दो पैरामीटर को सत्य, सत्य में बदलना होगा।

पंक्ति/कॉल जोड़ी से सेल पता प्राप्त करने के लिए, आप CellAddress का उपयोग कर सकते हैं। पता पाने के लिए उसे एक चादर की आवश्यकता है। हालांकि, अगर आप अपने वीएसटीओ सत्र में जो खुला है, उसके आधार पर आप (Excel.Worksheet)ActiveSheet में स्वैप कर सकते हैं (यह काम कर सकता है या नहीं भी हो सकता है)।

0

क्या आप किसी भी तरह एक्सेल के मूल सूत्र या फ़ंक्शंस को कॉल कर सकते हैं जो उनकी कार्यक्षमता को डुप्लिकेट करते हैं? यह सिर्फ

=CELL("address") 
-1
public string GetCellAddress(int row, int col) { 
     return (char)((int)'A' + (row - 1)) + col.ToString(); 
} 
+0

धन्यवाद टिमोरस ... क्या एक्सेल इंटरऑप ऑब्जेक्ट से इसे प्राप्त करना संभव नहीं है ??? – Sathish

+0

यह @ एलिस्टेयर का जवाब होगा। – Timores

+0

यह गलत मान वापस करेगा: पंक्ति 1 कॉल 27 ए 27 लौटाएगा जो कॉलम 1 पंक्ति 27 होगा। बस पंक्ति और कॉल स्विच करना वापस आ जाएगा [1 जो भी गलत है। सही एए 1 होगा। –

2

यह एक (untested) होगा भी स्तंभ पते के साथ काम करना चाहिए उस पर 26 से अधिक कर रहे हैं:

using System.Text; 

public string GetCellAddress(int row, int col) { 
    StringBuilder sb = new StringBuilder(); 
    col--; 
    do { 
     sb.Insert(0, (char)('A' + (col % 26))); 
     col /= 26; 
    } while (col > 0); 
    sb.Append(row); 
    return sb.ToString(); 
} 

सही किया: स्तंभ पते पीछे की ओर

+3

यह एए 1 के बजाय कॉल 27 के लिए बीए 1 वापस करेगा। –

0

कोशिकाओं था (2, 3)। एड्रेस

3

बस एक सुधार, col-- गलत जगह

static string GetCellAddress(int row, int col) 
    { 
     StringBuilder sb = new StringBuilder(); 

     do 
     { 
      col--; 
      sb.Insert(0, (char)('A' + (col % 26))); 
      col /= 26; 
     } while (col > 0); 
     sb.Append(row); 
     return sb.ToString(); 
    } 
0

मैं शून्य आधारित पंक्ति और स्तंभ सूचकांक उपयोग कर रहा हूँ में था। तो मुझे निम्नलिखित के पूर्व उत्तरों के कोड को अनुकूलित करना पड़ा। यह सभी संभव पतों के लिए यह अधिकार प्राप्त करने के लिए कुछ परीक्षण और त्रुटि आई है I.E. A1, Z2, Aa2, ZZ10, ...

public string GetAddress(int col, int row) 
    { 
     col++; 
     StringBuilder sb = new StringBuilder(); 
     do 
     { 
      col--; 
      sb.Insert(0, (char)('A' + (col % 26))); 
      col /= 26; 

     } while (col > 0); 
     sb.Append(row + 1); 
     return sb.ToString(); 
    }