C# Interopஐப் பயன்படுத்தி எக்செல் ஃபார்முலாக்களில் மேற்கோள் குறிப் பிழைகளைக் கையாளுதல்

C# Interopஐப் பயன்படுத்தி எக்செல் ஃபார்முலாக்களில் மேற்கோள் குறிப் பிழைகளைக் கையாளுதல்
C# Interopஐப் பயன்படுத்தி எக்செல் ஃபார்முலாக்களில் மேற்கோள் குறிப் பிழைகளைக் கையாளுதல்

சி# உடன் எக்செல் இண்டராப்பில் மேற்கோள் குறிப் பிழைகளைப் புரிந்துகொள்வது

C# இல் Interop.Excel நூலகத்துடன் பணிபுரியும் போது, ​​மேற்கோள் குறிகளை உள்ளடக்கிய சூத்திரங்களை அமைப்பது சில நேரங்களில் பிழைகளுக்கு வழிவகுக்கும். ஒரு பொதுவான சிக்கல் 0x800A03EC பிழை, இது எக்செல் செல் அல்லது வரம்பிற்கு சிக்கலான சூத்திரத்தை ஒதுக்க முயற்சிக்கும்போது ஏற்படும். இந்தப் பிழைகளைத் தவிர்க்க, அத்தகைய சூத்திரங்களை எவ்வாறு சரியாக வடிவமைப்பது மற்றும் அமைப்பது என்பதை இந்தக் கட்டுரை ஆராயும்.

குறிப்பாக, ஒரு சூத்திரத்தில் மேற்கோள் குறிகள் தேவைப்படும் பல நிபந்தனைகள் மற்றும் உரை வெளியீடுகளைக் கொண்ட ஒரு உதாரணத்தைப் பார்ப்போம். சரியான தொடரியல் மற்றும் C# இல் கையாளுதல் ஆகியவற்றைப் புரிந்துகொள்வது நேரத்தை மிச்சப்படுத்தலாம் மற்றும் எக்செல் ஆட்டோமேஷன் பணிகளில் பொதுவான சிக்கல்களைத் தடுக்கலாம்.

கட்டளை விளக்கம்
COMException ஒரு .NET விதிவிலக்கு வகுப்பு, எக்செல் ஆட்டோமேஷன் சம்பந்தப்பட்டவை போன்ற COM இன்டர்ஆப் அழைப்புகள் தொடர்பான பிழைகளைக் கையாளப் பயன்படுகிறது.
Marshal.ReleaseComObject COM பொருளை வெளியிடுவதற்கும் அதன் குறிப்பு எண்ணிக்கையைக் குறைப்பதற்கும் ஒரு முறை பயன்படுத்தப்படுகிறது, இது COM interop உடன் பணிபுரியும் போது நினைவக கசிவுகளைத் தவிர்க்க உதவுகிறது.
Application.Quit எக்செல் பயன்பாட்டை நிரல் ரீதியாக மூடுவதற்குப் பயன்படுத்தப்படும் முறை, இது வளங்களை விடுவிப்பதற்கும், எக்செல் பின்னணியில் இயங்குவதைத் தடுப்பதற்கும் முக்கியமானது.
Range.Formula எக்செல் இல் ஒரு செல் அல்லது கலங்களின் வரம்பின் சூத்திரத்தை அமைக்க அல்லது பெறப் பயன்படும் சொத்து. இது சிக்கலான சூத்திரங்களை நிரல் ரீதியாக அமைக்க அனுமதிக்கிறது.
Worksheet.get_Range ஒரு பணித்தாளில் செல்கள் வரம்பைப் பெறுவதற்குப் பயன்படுத்தப்படும் முறை. எந்த செல்களைக் கையாள வேண்டும் அல்லது அணுக வேண்டும் என்பதைக் குறிப்பிட இது பயன்படுகிறது.
Workbook.SaveAs தற்போதைய பணிப்புத்தகத்தை ஒரு குறிப்பிட்ட கோப்பு பெயர் அல்லது பாதையில் சேமிக்கப் பயன்படுத்தப்படும் முறை. எக்செல் கோப்பில் தொடர்ந்து மாற்றங்களைச் செய்ய இது அவசியம்.
Application.Workbooks.Add எக்செல் இல் புதிய பணிப்புத்தகத்தை உருவாக்கப் பயன்படுத்தப்படும் முறை. இது ஒரு புதிய ஆவணத்தைத் தொடங்க அல்லது செயலாக்கத்திற்கான புதிய எக்செல் கோப்பைத் தொடங்கப் பயன்படுகிறது.
Worksheet.Cells வரிசை மற்றும் நெடுவரிசை குறியீடுகள் மூலம் குறிப்பிட்ட செல் அல்லது கலங்களின் வரம்பை அணுகுவதற்குப் பயன்படுத்தப்படும் சொத்து. நேரடி செல் கையாளுதலுக்கு இது பயனுள்ளதாக இருக்கும்.
Application எக்செல் பயன்பாட்டு பொருள், கோப்புகளைத் திறப்பது, பணிப்புத்தகங்களைச் சேர்ப்பது அல்லது தாள்களை மாற்றுவது போன்ற எக்செல் நிரல்ரீதியாகக் கட்டுப்படுத்தப் பயன்படுகிறது.
Range எக்செல் இல் உள்ள செல் அல்லது கலங்களின் குழுவைக் குறிக்கும் ஒரு பொருள். செல் மதிப்புகள், வடிவங்கள் மற்றும் சூத்திரங்களுடன் தொடர்பு கொள்ள இது பயன்படுகிறது.

சி# எக்செல் ஆட்டோமேஷன் ஸ்கிரிப்ட்களின் விரிவான விளக்கம்

C# மற்றும் Interop.Excel நூலகத்தைப் பயன்படுத்தி எக்செல் கலங்களில் சூத்திரங்களை எவ்வாறு அமைப்பது என்பதை வழங்கப்பட்ட ஸ்கிரிப்ட்கள் விளக்குகின்றன. முதல் ஸ்கிரிப்ட் எக்செல் பயன்பாட்டின் நிகழ்வைத் துவக்குகிறது மற்றும் புதிய பணிப்புத்தகம் மற்றும் பணித்தாள் உருவாக்குகிறது. இது சரியான எக்செல் தொடரியல் கொண்ட ஒரு சூத்திர சரத்தை வரையறுக்கிறது, மேற்கோள் குறிகளை சரியான முறையில் கையாளுவதை உறுதி செய்கிறது. இந்த ஃபார்முலாவைப் பயன்படுத்தி கலங்களின் வரம்பிற்கு ஒதுக்கப்படுகிறது Range.Formula சொத்து. சூத்திரத்தை அமைத்த பிறகு, பணிப்புத்தகம் சேமிக்கப்பட்டு மூடப்பட்டது, மேலும் எக்செல் பயன்பாடு வெளியேறும். இந்த அணுகுமுறை ஆதாரங்கள் சரியாக வெளியிடப்படுவதை உறுதிசெய்கிறது மற்றும் எக்செல் பின்னணியில் இயங்குவதைத் தடுக்கிறது.

இரண்டாவது ஸ்கிரிப்ட் பெயரிடப்பட்ட ஒரு உதவி வகுப்பைப் பயன்படுத்தி இந்தக் கருத்தை விரிவுபடுத்துகிறது ExcelMethods. இந்த வகுப்பில் ஒரு முறை உள்ளது SetColumnFormula இது செல்களின் வரம்பிற்கு சூத்திரத்தைப் பயன்படுத்தும் செயல்முறையை எளிதாக்குகிறது. முக்கிய நிரல் எக்செல் துவக்குகிறது, ஒரு பணிப்புத்தகம் மற்றும் பணித்தாள் உருவாக்குகிறது, பின்னர் அழைக்கிறது SetColumnFormula தேவையான அளவுருக்கள் கொண்ட முறை. உதவி வகுப்பு முறை உள்நாட்டில் பயன்படுத்துகிறது Worksheet.Range வரம்பைக் குறிப்பிடுவதற்கான சொத்து மற்றும் சூத்திரத்தைப் பயன்படுத்தி அமைக்கிறது Range.Formula. இந்த மட்டு அணுகுமுறை குறியீட்டை மேலும் படிக்கக்கூடியதாகவும் மீண்டும் பயன்படுத்தக்கூடியதாகவும் ஆக்குகிறது, ஏனெனில் இது ஒரு பிரத்யேக முறையில் சூத்திர அமைப்பு தர்க்கத்தை இணைக்கிறது. ஸ்கிரிப்ட் பயன்படுத்தி சரியான பிழை கையாளுதல் அடங்கும் try-catch எதையும் பிடிக்க மற்றும் காண்பிக்க தொகுதிகள் COMException செயல்பாட்டின் போது ஏற்படக்கூடிய பிழைகள்.

C# Interop மூலம் எக்செல் ஃபார்முலாக்களில் மேற்கோள் குறிப் பிழைகளைத் தீர்ப்பது

C# ஸ்கிரிப்ட் Interop.Excel ஐப் பயன்படுத்துகிறது

using System;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace ExcelFormulaExample
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelApp = new Application();
            Workbook workbook = excelApp.Workbooks.Add();
            Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
            try
            {
                string formula = @"=HA(VAGY(C2=""83V"";C2=""8U"";C2=""9V"");""nem"";""igen"")";
                Range range = worksheet.get_Range("A1");
                range.Formula = formula;
                workbook.SaveAs("TestFormula.xlsx");
            }
            catch (COMException ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
            finally
            {
                workbook.Close(false);
                Marshal.ReleaseComObject(workbook);
                excelApp.Quit();
                Marshal.ReleaseComObject(excelApp);
            }
        }
    }
}

சி# இல் உதவி வகுப்பைப் பயன்படுத்தி ஃபார்முலா ஒதுக்கீட்டை செயல்படுத்துதல்

உதவி வகுப்புடன் சி# ஸ்கிரிப்ட்

using System;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace ExcelFormulaHelper
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelApp = new Application();
            Workbook workbook = excelApp.Workbooks.Add();
            Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
            try
            {
                string formula = @"=HA(VAGY(C2=""83V"";C2=""8U"";C2=""9V"");""nem"";""igen"")";
                ExcelMethods.SetColumnFormula(worksheet, 2, 1, 10, formula);
                workbook.SaveAs("TestFormulaHelper.xlsx");
            }
            catch (COMException ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
            finally
            {
                workbook.Close(false);
                Marshal.ReleaseComObject(workbook);
                excelApp.Quit();
                Marshal.ReleaseComObject(excelApp);
            }
        }
    }
}
public static class ExcelMethods
{
    public static void SetColumnFormula(Worksheet ws, int startRow, int column, int endRow, string formula)
    {
        Range range = ws.Range[ws.Cells[startRow, column], ws.Cells[endRow, column]];
        range.Formula = formula;
    }
}

சி# இல் உள்ள எக்செல் ஃபார்முலா பிழைகளை பிழைத்திருத்துதல் மற்றும் சரிசெய்தல்

பிழை கையாளுதலுக்கான C# ஸ்கிரிப்ட்

using System;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace ExcelFormulaErrorHandling
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelApp = new Application();
            Workbook workbook = excelApp.Workbooks.Add();
            Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
            try
            {
                string formula = @"=HA(VAGY(C2=""83V"";C2=""8U"";C2=""9V"");""nem"";""igen"")";
                Range range = worksheet.get_Range("A1");
                range.Formula = formula;
                workbook.SaveAs("TestFormulaErrorHandling.xlsx");
            }
            catch (COMException ex)
            {
                Console.WriteLine("Error: " + ex.Message);
                // Additional error handling code
            }
            finally
            {
                workbook.Close(false);
                Marshal.ReleaseComObject(workbook);
                excelApp.Quit();
                Marshal.ReleaseComObject(excelApp);
            }
        }
    }
}

சி# இல் எக்செல் ஃபார்முலாக்களைக் கையாளுவதற்கான மேம்பட்ட நுட்பங்கள்

C# ஐப் பயன்படுத்தி எக்செல் பணிகளை தானியக்கமாக்கும்போது, ​​மேற்கோள் குறிகளை உள்ளடக்கிய சிக்கலான சூத்திரங்களைக் கையாள்வது சவாலானதாக இருக்கும். சூத்திர சரத்தில் தொடரியல் சிக்கல்கள் இருக்கும்போது 0x800A03EC பிழை பொதுவாக எழுகிறது. அத்தகைய சூத்திரங்களைக் கையாள்வதற்கான ஒரு சிறந்த வழி, சூத்திரத்தில் உள்ள அனைத்து மேற்கோள் குறிகளும் சரியாகத் தவிர்க்கப்படுவதை உறுதிசெய்வதாகும். சூத்திரத்தில் உள்ள மேற்கோள் குறிகளைக் குறிக்க சரத்திற்குள் இரட்டை மேற்கோள் குறிகளைப் பயன்படுத்துவது இதில் அடங்கும். இதைச் செய்வதன் மூலம், நீங்கள் COMException பிழையைத் தவிர்க்கலாம் மற்றும் குறிப்பிட்ட எக்செல் வரம்பில் சூத்திரம் சரியாக அமைக்கப்பட்டிருப்பதை உறுதிசெய்யலாம்.

கருத்தில் கொள்ள வேண்டிய மற்றொரு அம்சம் COM பொருள்களின் சரியான வெளியீடு ஆகும். Interop.Excel நூலகத்தைப் பயன்படுத்தும் போது, ​​நினைவகக் கசிவைத் தடுக்கவும், எக்செல் நிகழ்வுகள் பின்னணியில் இயங்காமல் இருப்பதை உறுதி செய்யவும் எக்செல் தொடர்பான அனைத்துப் பொருட்களையும் வெளியிடுவது மிகவும் முக்கியமானது. தி Marshal.ReleaseComObject இந்த நோக்கத்திற்காக முறை பயன்படுத்தப்படுகிறது. கூடுதலாக, பயன்படுத்தி Application.Quit எக்செல் பயன்பாட்டை மூட மற்றும் Workbook.Close பணிப்புத்தகத்தை மூடுவது வளங்களை சுத்தம் செய்வதில் இன்றியமையாத படிகளாகும். இந்தச் செயல்பாடுகளைச் சுற்றி ட்ரை-கேட்ச் பிளாக்குகளைப் பயன்படுத்தி முறையான பிழையைக் கையாளுதல், ஏதேனும் சிக்கல்கள் பதிவு செய்யப்பட்டு சரியான முறையில் நிர்வகிக்கப்படுவதை உறுதி செய்கிறது.

சி# இல் எக்செல் ஃபார்முலா ஆட்டோமேஷன் பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்

  1. 0x800A03EC பிழை என்ன?
  2. 0x800A03EC பிழை என்பது ஒரு COMException ஆகும், இது C# Interop ஐப் பயன்படுத்தி எக்செல் கலத்தில் அமைக்கப்படும் சூத்திரத்தின் தொடரியல் அல்லது கட்டமைப்பில் சிக்கல் இருக்கும்போது ஏற்படும்.
  3. எக்செல் ஃபார்முலாக்களில் மேற்கோள் குறிகளை நான் எவ்வாறு கையாள்வது?
  4. எக்செல் ஃபார்முலாக்களில் மேற்கோள் குறிகளைக் கையாள, அவற்றைச் சரியாகத் தப்பிக்க, ஃபார்முலா சரத்திற்குள் இரட்டை மேற்கோள் குறிகளைப் பயன்படுத்த வேண்டும். உதாரணத்திற்கு, =IF(OR(C2=""83V"";C2=""8U"";C2=""9V"");""no"";""yes"").
  5. பங்கு என்ன Marshal.ReleaseComObject?
  6. Marshal.ReleaseComObject COM பொருள்களை வெளியிடவும், அவற்றின் குறிப்பு எண்ணிக்கையைக் குறைக்கவும் பயன்படுகிறது, எக்செல் இன்டெராப் உடன் பணிபுரியும் போது நினைவக கசிவைத் தடுக்கிறது.
  7. ஏன் Application.Quit முக்கியமான?
  8. Application.Quit முக்கியமானது, ஏனெனில் இது எக்செல் பயன்பாட்டை மூடுகிறது, ஆட்டோமேஷன் பணிகள் முடிந்த பிறகு எக்செல் பின்னணியில் தொடர்ந்து இயங்காமல் இருப்பதை உறுதிசெய்கிறது.
  9. சி#ஐப் பயன்படுத்தி எக்செல் கலத்தில் ஃபார்முலாவை எவ்வாறு அமைப்பது?
  10. எக்செல் கலத்தில் சூத்திரத்தை அமைத்துள்ளீர்கள் Range.Formula சொத்து. உதாரணத்திற்கு, range.Formula = "=IF(OR(C2=""83V"";C2=""8U"";C2=""9V"");""no"";""yes"")".
  11. நோக்கம் என்ன Worksheet.get_Range?
  12. Worksheet.get_Range ஒரு பணித்தாளில் உள்ள கலங்களின் வரம்பைப் பெறப் பயன்படுகிறது, இது எந்த செல்களைக் கையாள வேண்டும் அல்லது அணுக வேண்டும் என்பதைக் குறிப்பிட அனுமதிக்கிறது.
  13. எக்செல் பணிப்புத்தகத்தில் மாற்றங்களை நிரல் முறையில் சேமிக்க முடியுமா?
  14. ஆம், நீங்கள் எக்செல் பணிப்புத்தகத்தில் மாற்றங்களைச் சேமிக்கலாம் Workbook.SaveAs முறை.
  15. என்ன செய்கிறது Application.Workbooks.Add செய்?
  16. Application.Workbooks.Add Excel இல் ஒரு புதிய பணிப்புத்தகத்தை உருவாக்குகிறது, இது ஒரு புதிய ஆவணத்தைத் தொடங்க அல்லது செயலாக்கத்திற்கான புதிய Excel கோப்பைத் துவக்க அனுமதிக்கிறது.
  17. எக்செல் இன்டராப் செயல்பாடுகளில் பிழைகளை நான் எவ்வாறு கையாள்வது?
  18. எக்செல் இண்டெராப் செயல்பாடுகளில் உள்ள பிழைகளை, இண்டராப் அழைப்புகளைச் சுற்றி ட்ரை-கேட்ச் பிளாக்குகளைப் பயன்படுத்திப் பிடித்துக் காட்டலாம். COMException பிழைகள்.
  19. எக்செல் ஆட்டோமேஷனில் பணிப்புத்தகங்களை மூடுவது மற்றும் பொருட்களை வெளியிடுவது ஏன் முக்கியம்?
  20. பணிப்புத்தகங்களை மூடுவது மற்றும் வளங்களை விடுவிக்க பொருட்களை வெளியிடுவது மற்றும் எக்செல் பின்னணியில் இயங்குவதைத் தடுப்பது முக்கியம், இது செயல்திறன் சிக்கல்கள் மற்றும் நினைவக கசிவுகளை ஏற்படுத்தும்.

இறுதி எண்ணங்கள்:

C# இல் எக்செல் பணிகளை வெற்றிகரமாக தானியக்கமாக்குவது சூத்திர தொடரியல் மற்றும் வள மேலாண்மைக்கு கவனமாக கவனம் செலுத்த வேண்டும். மேற்கோள் குறிகளில் இருந்து சரியாக தப்பித்து, பொருத்தமான பிழை கையாளுதல் மற்றும் வளங்களை சுத்தம் செய்யும் முறைகளைப் பயன்படுத்துவதன் மூலம், 0x800A03EC பிழை போன்ற பொதுவான ஆபத்துக்களைத் தவிர்க்கலாம். வழங்கப்பட்ட ஸ்கிரிப்டுகள் மற்றும் வழிகாட்டுதல்கள் உங்கள் C# திட்டங்களில் Excel ஆட்டோமேஷனை திறம்பட நிர்வகிப்பதற்கான உறுதியான அடித்தளத்தை வழங்குகின்றன, இது செயல்பாடு மற்றும் செயல்திறன் இரண்டையும் உறுதி செய்கிறது.