2013-02-01 12 views
5

देर से बाध्यकारी का उपयोग करके Range.EntireColumn.NumberFormat कैसे सेट करें? यकीन है कि अगर नहीं मैं इसे अच्छी तरह से कर रहा हूँएक्सेल लेट बाइंडिंग EntireColumn.NumberFormat

object rng = ws.GetType().InvokeMember("UsedRange", BindingFlags.GetProperty, null, ws, null); 
object cols = rng.GetType().InvokeMember("Columns", BindingFlags.GetProperty, null, rng, null); 
cols.GetType().InvokeMember("AutoFit", BindingFlags.InvokeMethod, null, cols, null); 

ऑटोफ़िट im के लिए:

object rg = ws.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, ws, new object[2]{1,iCol}); 
object ec = rg.GetType().InvokeMember("EntireColumn", BindingFlags.GetProperty, null, rg, null); 
rg.GetType().InvokeMember("NumberFormat", BindingFlags.SetProperty, null, rg, new object[1] { "DD/MM/YYYY" }); 

और यह भी ऑटोफ़िट विधि के लिए, मैं इस राशि: मैं इस कोड वर्तमान में कर रहा हूँ।

+0

हाय सेरेन, एसओ में आपका स्वागत है! मैं वीबीए की दुनिया से हूं और सी # नहीं, इसलिए यह काम नहीं कर सकता है, लेकिन फिर भी इसे आजमाएं। यदि 'ws' या' rg'are ऑब्जेक्ट्स के रूप में परिभाषित किया गया है लेकिन वास्तव में वर्कशीट या रेंज ऑब्जेक्ट है, तो आप प्रारंभिक बाध्यकारी के साथ ही अपनी विधियों/गुणों को उसी तरह एक्सेस कर सकते हैं। इस प्रकार, कोशिश करो, 'ws.Cells (...) '! –

+0

आपका ऑटोफिट कोड भी मेरे लिए काम करता है ... –

+0

हाय सिद्धार्थ - उत्तर के लिए धन्यवाद, बीमार अब कोशिश करें, मेरी समस्या यह है कि कोड अभी काम नहीं करता है, ऐसा नहीं करता है जो इसे करना था लेकिन देख रहा था आपका कोड मुझे लगता है कि मैं देर से बाध्यकारी का उपयोग करके गलत समझता हूं, मुझे लगता है कि यह मेरा पहला समय था, लेकिन धन्यवाद :) –

उत्तर

4

की कोशिश की और परीक्षण किया गया

private void button1_Click(object sender, EventArgs e) 
{ 
    object xlApp; 
    object xlWbCol; 
    object xlWb; 
    object xlSheet; 
    object xlRange; 
    object xlWsCol; 

    //~~> create new Excel instance 
    Type tp; 
    tp = Type.GetTypeFromProgID("Excel.Application"); 
    xlApp = Activator.CreateInstance(tp); 

    object[] parameter = new object[1]; 
    parameter[0] = true; 
    xlApp.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, xlApp, parameter); 
    xlApp.GetType().InvokeMember("UserControl", BindingFlags.SetProperty, null, xlApp, parameter); 

    //~~> Get the xlWb collection 
    xlWbCol = xlApp.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, xlApp, null); 

    //~~> Create a new xlWb 
    xlWb = xlWbCol.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, xlWbCol, null); 

    //~~> Get the worksheet collection 
    xlWsCol = xlWb.GetType().InvokeMember("WorkSheets", BindingFlags.GetProperty, null, xlApp, null); 

    //~~> Create a new workxlSheet 
    xlSheet = xlWb.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, xlWsCol, null); 

    //~~> Assign cell to xlRange object 
    xlRange = xlSheet.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, xlSheet, new object[2] { 1, 1 }); 

    //~~> Write a date to cell 
    xlRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, xlRange, new object[] { "1-1-2012" }); 

    //~~> Get the column 
    object cols = xlRange.GetType().InvokeMember("Columns", BindingFlags.GetProperty, null, xlRange, null); 

    //~~> Autofit the column 
    cols.GetType().InvokeMember("AutoFit", BindingFlags.InvokeMethod, null, cols, null); 
    //~~> Format the entire Column 
    cols.GetType().InvokeMember("NumberFormat", BindingFlags.SetProperty, null, cols, new object[1] { "DD/MM/YYYY" }); 

    //~~> Release the object 
    //System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); 
} 

नोट: usedrange के लिए शीर्ष

अनुसरण करे

पर using System.Reflection; जोड़े ऑटोफ़िट के लिए यह काम करता है

private void button1_Click(object sender, EventArgs e) 
{ 
    object xlApp; 
    object xlWbCol; 
    object xlWb; 
    object xlSheet; 
    object xlRangeUsdRng; 
    object xlRange; 
    object xlWsCol; 

    //~~> create new Excel instance 
    Type tp; 
    tp = Type.GetTypeFromProgID("Excel.Application"); 
    xlApp = Activator.CreateInstance(tp); 

    object[] parameter = new object[1]; 
    parameter[0] = true; 
    xlApp.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, xlApp, parameter); 
    xlApp.GetType().InvokeMember("UserControl", BindingFlags.SetProperty, null, xlApp, parameter); 

    //~~> Get the xlWb collection 
    xlWbCol = xlApp.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, xlApp, null); 

    //~~> Create a new xlWb 
    xlWb = xlWbCol.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, xlWbCol, null); 

    //~~> Get the worksheet collection 
    xlWsCol = xlWb.GetType().InvokeMember("WorkSheets", BindingFlags.GetProperty, null, xlApp, null); 

    //~~> Create a new workxlSheet 
    xlSheet = xlWb.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, xlWsCol, null); 

    //~~> Assign cell F5 to xlRange object for testing purpose 
    xlRange = xlSheet.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, xlSheet, new object[2] {5, 6 }); 
    xlRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, xlRange, new object[] { "1-1-2012" }); 

    //~~> Assign UsedRange 
    xlRangeUsdRng = xlSheet.GetType().InvokeMember("UsedRange", BindingFlags.GetProperty, null, xlSheet, null); 

    //~~> Get the Columns 
    object cols = xlRangeUsdRng.GetType().InvokeMember("EntireColumn", BindingFlags.GetProperty, null, xlRangeUsdRng, null); 

    //~~> Autofit 
    cols.GetType().InvokeMember("AutoFit", BindingFlags.InvokeMethod, null, cols, null); 

} 
संबंधित मुद्दे