दिलचस्प पोस्ट
तिथि सीमाओं के बीच तिथि उत्पन्न करें आई ++ और ++ आई में क्या अंतर है? ऑनलाइन / ऑफ़लाइन ईवेंट क्रॉस-ब्राउज़र का पता कैसे लगा सकता है? एमएसवीसी में फ्लोटिंग प्वाइंट वैल्यू जैसे कि 3.14 को डिफ़ॉल्ट रूप से डबल माना जाता है? जावा "शून्य" और "गैर शून्य" निर्माता बॉल टू बॉल टकराव – डिटेक्शन और हैंडलिंग GitHub पुल अनुरोध कैसे करें I स्विफ्ट का उपयोग करके कहीं भी स्पर्श करके आईओएस कीबोर्ड बंद करें टुकड़ों के साथ एंड्रॉइड खोज मैं स्थानीय रूप से कुछ फाइलों को अनदेखा करने के लिए कैसे git कॉन्फ़िगर करूं? Fs.readFile से डेटा प्राप्त करें नेस्टेड तत्व (वेब ​​घटक) इसका टेम्पलेट नहीं प्राप्त कर सकते एसक्यूएल सर्वर UDF में पैरामीटर के रूप में तालिका पास करें XMLHttpRequest उत्पत्ति रिक्त की अनुमति नहीं है एक्सेस-कंट्रोल-अनुमति-फ़ाइल के लिए उत्पत्ति: /// फाइल करने के लिए: /// (सर्वरहीन) एचटीटीपी समर्थन के साथ एचटीटीप्लेस्टनर

सी # का उपयोग करते हुए Excel फ़ाइल के डेटा को कैसे पढ़ें?

कैसे सी # का उपयोग कर एक एक्सेल फ़ाइल को पढ़ने के लिए? मैं ई-मेल स्वरूप को खोजने के लिए क्लिपबोर्ड पर पढ़ने और उसे कॉपी करने के लिए एक एक्सेल फाइल खोलता हूं, लेकिन मुझे यह नहीं पता कि यह कैसे करना है।

FileInfo finfo; Excel.ApplicationClass ExcelObj = new Excel.ApplicationClass(); ExcelObj.Visible = false; Excel.Workbook theWorkbook; Excel.Worksheet worksheet; if (listView1.Items.Count > 0) { foreach (ListViewItem s in listView1.Items) { finfo = new FileInfo(s.Text); if (finfo.Extension == ".xls" || finfo.Extension == ".xlsx" || finfo.Extension == ".xlt" || finfo.Extension == ".xlsm" || finfo.Extension == ".csv") { theWorkbook = ExcelObj.Workbooks.Open(s.Text, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, false, false); for (int count = 1; count <= theWorkbook.Sheets.Count; count++) { worksheet = (Excel.Worksheet)theWorkbook.Worksheets.get_Item(count); worksheet.Activate(); worksheet.Visible = false; worksheet.UsedRange.Cells.Select(); } } } } 

वेब के समाधान से एकत्रित समाधान "सी # का उपयोग करते हुए Excel फ़ाइल के डेटा को कैसे पढ़ें?"

ठीक,

एक्सेल VSTO प्रोग्रामिंग के बारे में समझने के लिए अधिक कठिन अवधारणाओं में से एक यह है कि आप किसी सरणी की तरह कोशिकाओं का उल्लेख नहीं करते हैं, Worksheet[0][0] आपको सेल A1 नहीं देंगे, यह आपके लिए त्रुटि की जाएगी यहां तक ​​कि जब आप एक्सेल में टाइप करते हैं, तो एक्सेल खोलता है, तो आप वास्तव में रेंज ए 1 में डेटा दर्ज कर रहे हैं इसलिए आप को नामित रेंज के रूप में कक्ष देखें यहां एक उदाहरण है:

 Excel.Worksheet sheet = workbook.Sheets["Sheet1"] as Excel.Worksheet; Excel.Range range = sheet.get_Range("A1", Missing.Value) 

अब आप वाकई टाइप कर सकते हैं:

 range.Text // this will give you the text the user sees range.Value2 // this will give you the actual value stored by Excel (without rounding) 

यदि आप ऐसा कुछ करना चाहते हैं:

 Excel.Range range = sheet.get_Range("A1:A5", Missing.Value) if (range1 != null) foreach (Excel.Range r in range1) { string user = r.Text string value = r.Value2 } 

एक बेहतर तरीका हो सकता है, लेकिन यह मेरे लिए काम किया है

Value और न Value का उपयोग करने की आवश्यकता है क्योंकि Value प्रॉपर्टी एक पैरामीटिज्ड है और सी # अभी तक उनका समर्थन नहीं करती है।

क्लीनअप कोड के लिए, जब मैं कल काम करता हूं, तो मेरे पास यह पोस्ट होगा, मेरे पास मेरे पास कोड नहीं है, लेकिन यह बहुत बॉयलरप्लेट है I आप ऑब्जेक्ट को सिर्फ रिवर्स ऑर्डर में बंद कर देते हैं, जिसे आपने बनाया था। आप Using() ब्लॉक Using() उपयोग नहीं कर सकते क्योंकि Excel.Application या Excel.Workbook IDisposable लागू नहीं करता है, और यदि आप सफाई नहीं करते हैं, तो आप मेमोरी में फांसी हुई Excel ऑब्जेक्ट के साथ छोड़ दिया जाएगा

ध्यान दें:

  • यदि आप Visibility संपत्ति Excel को प्रदर्शित नहीं करते हैं, जो आपके उपयोगकर्ताओं को विचलित कर सकते हैं, लेकिन यदि आप केवल डेटा को चीरना चाहते हैं, तो शायद यह काफी अच्छा है
  • आप ओलेडीब कर सकते हैं, जो भी काम करेगा

मुझे आशा है कि आप शुरू हो जाएंगे, मुझे बताएं कि आपको और स्पष्टीकरण की आवश्यकता है। मैं एक पूर्ण पोस्ट करूँगा

यहाँ एक पूर्ण नमूना है:

 using System; using System.IO; using System.Reflection; using NUnit.Framework; using ExcelTools = Ms.Office; using Excel = Microsoft.Office.Interop.Excel; namespace Tests { [TestFixture] public class ExcelSingle { [Test] public void ProcessWorkbook() { string file = @"C:\Users\Chris\Desktop\TestSheet.xls"; Console.WriteLine(file); Excel.Application excel = null; Excel.Workbook wkb = null; try { excel = new Excel.Application(); wkb = ExcelTools.OfficeUtil.OpenBook(excel, file); Excel.Worksheet sheet = wkb.Sheets["Data"] as Excel.Worksheet; Excel.Range range = null; if (sheet != null) range = sheet.get_Range("A1", Missing.Value); string A1 = String.Empty; if( range != null ) A1 = range.Text.ToString(); Console.WriteLine("A1 value: {0}", A1); } catch(Exception ex) { //if you need to handle stuff Console.WriteLine(ex.Message); } finally { if (wkb != null) ExcelTools.OfficeUtil.ReleaseRCM(wkb); if (excel != null) ExcelTools.OfficeUtil.ReleaseRCM(excel); } } } } 

कल कामों को मैं ExcelTools से पोस्ट करूंगा, मेरे पास यह कोड या तो मेरे पास नहीं है

संपादित करें: जैसा कि वादा किया गया है, यहां ExcelTools से फ़ंक्शन हैं जिन्हें आपको आवश्यकता हो सकती है

 public static Excel.Workbook OpenBook(Excel.Application excelInstance, string fileName, bool readOnly, bool editable, bool updateLinks) { Excel.Workbook book = excelInstance.Workbooks.Open( fileName, updateLinks, readOnly, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, editable, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); return book; } public static void ReleaseRCM(object o) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(o); } catch { } finally { o = null; } } 

फ्रैंक होने के लिए, यदि आप VB.NET का उपयोग करते हैं तो यह सामान बहुत आसान है I यह सी # में है क्योंकि मैंने इसे नहीं लिखा था। VB.NET विकल्प पैरामीटर अच्छी तरह से करता है, सी # नहीं करता है, इसलिए टाइप। मैसिंग एक बार जब आप टाइप करते हैं। एक पंक्ति में दो बार चुंबन, आप कमरे से चिल्लाते हैं!

आपके प्रश्न के लिए, आप निम्नलिखित की कोशिश कर सकते हैं:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.find(VS.80).aspx

जब मैं अपनी मीटिंग से वापस आ जाऊं तो मैं एक उदाहरण पोस्ट करूंगा … चीयर्स

संपादित करें: यहां एक उदाहरण है

 range = sheet.Cells.Find("Value to Find", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSearchDirection.xlNext, Type.Missing, Type.Missing, Type.Missing); range.Text; //give you the value found 

यहां इस साइट से प्रेरित एक और उदाहरण है:

  range = sheet.Cells.Find("Value to find", Type.Missing, Type.Missing,Excel.XlLookAt.xlWhole,Excel.XlSearchOrder.xlByColumns,Excel.XlSearchDirection.xlNext,false, false, Type.Missing); 

यह मापदंडों को समझने में मदद करता है

पी एस मैं उन अजीब लोगों में से एक हूँ जो कॉम ऑटोमेशन सीखने का आनंद उठाता है। यह सब कोड एक ऐसे उपकरण से उबला हुआ था जो मैंने काम के लिए लिखा था, जिसके लिए मुझे प्रति सोमवार को प्रयोगशाला से 1000 से अधिक स्प्रेडशीट्स की प्रक्रिया करने की ज़रूरत थी

आप एक्सेल फाइलों को प्रोसेस करने के लिए Microsoft.Office.Interop.Excel विधानसभा का उपयोग कर सकते हैं।

  1. अपने प्रोजेक्ट पर राइट क्लिक करें और Add reference । Microsoft.Office.Interop.Excel विधानसभा जोड़ें
  2. using Microsoft.Office.Interop.Excel; शामिल करें using Microsoft.Office.Interop.Excel; विधानसभा का उपयोग करने के लिए

यहां नमूना कोड है:

  using Microsoft.Office.Interop.Excel; //create the Application object we can use in the member functions. Microsoft.Office.Interop.Excel.Application _excelApp = new Microsoft.Office.Interop.Excel.Application(); _excelApp.Visible = true; string fileName = "C:\\sampleExcelFile.xlsx"; //open the workbook Workbook workbook = _excelApp.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //select the first sheet Worksheet worksheet = (Worksheet)workbook.Worksheets[1]; //find the used range in worksheet Range excelRange = worksheet.UsedRange; //get an object array of all of the cells in the worksheet (their values) object[,] valueArray = (object[,])excelRange.get_Value( XlRangeValueDataType.xlRangeValueDefault); //access the cells for (int row = 1; row <= worksheet.UsedRange.Rows.Count; ++row) { for (int col = 1; col <= worksheet.UsedRange.Columns.Count; ++col) { //access each cell Debug.Print(valueArray[row, col].ToString()); } } //clean up stuffs workbook.Close(false, Type.Missing, Type.Missing); Marshal.ReleaseComObject(workbook); _excelApp.Quit(); Marshal.FinalReleaseComObject(_excelApp); 

आप ओलेडीबीकनेक्शन क्यों नहीं बनाते? इंटरनेट में बहुत सारे उपलब्ध संसाधन हैं यहाँ एक उदाहरण है

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filename+";Extended Properties=Excel 8.0"); con.Open(); try { //Create Dataset and fill with imformation from the Excel Spreadsheet for easier reference DataSet myDataSet = new DataSet(); OleDbDataAdapter myCommand = new OleDbDataAdapter(" SELECT * FROM ["+listname+"$]" , con); myCommand.Fill(myDataSet); con.Close(); richTextBox1.AppendText("\nDataSet Filled"); //Travers through each row in the dataset foreach (DataRow myDataRow in myDataSet.Tables[0].Rows) { //Stores info in Datarow into an array Object[] cells = myDataRow.ItemArray; //Traverse through each array and put into object cellContent as type Object //Using Object as for some reason the Dataset reads some blank value which //causes a hissy fit when trying to read. By using object I can convert to //String at a later point. foreach (object cellContent in cells) { //Convert object cellContect into String to read whilst replacing Line Breaks with a defined character string cellText = cellContent.ToString(); cellText = cellText.Replace("\n", "|"); //Read the string and put into Array of characters chars richTextBox1.AppendText("\n"+cellText); } } //Thread.Sleep(15000); } catch (Exception ex) { MessageBox.Show(ex.ToString()); //Thread.Sleep(15000); } finally { con.Close(); } 

सबसे पहले, यह जानना महत्वपूर्ण है कि "पढ़ने और क्लिपबोर्ड पर कॉपी करने के लिए एक्सेल फ़ाइल खोलें" का अर्थ क्या है … "

यह बहुत महत्वपूर्ण है क्योंकि आप ऐसा कर सकते हैं जो आप कर सकते हैं पर निर्भर करते हुए कई तरीके हैं। मुझे समझाने दो:

  1. यदि आप डेटा का एक सेट पढ़ना चाहते हैं और उस क्लिपबोर्ड में प्रतिलिपि बनाना चाहते हैं और आपको डेटा प्रारूप (जैसे स्तंभ नाम) पता है, तो मैं सुझाव देता हूं कि आप फ़ाइल खोलने के लिए एक OleDbConnection का उपयोग करें, इस तरह से आप एक्सएलएस फ़ाइल सामग्री को डाटाबेस तालिका, ताकि आप एसक्यूएल निर्देश के साथ डेटा पढ़ सकें और जितनी चाहें डेटा का इलाज कर सकें।

  2. यदि आप Excel ऑब्जेक्ट मॉडल के साथ डेटा पर कार्य करना चाहते हैं, तो जिस तरह से आपने शुरू किया था उसे खोलें।

  3. कुछ समय सीएसवी फाइल के प्रकार के रूप में एक एक्सएलएस फाइल का इलाज करना संभव है, ऐसे टूल हैं जैसे फाइल हेल्पर जो एक मनमानी ऑब्जेक्ट पर एक संरचना के मानचित्रण के द्वारा एक सरल तरीके से एक्सल फाइल का इलाज करने और खोलने की अनुमति देते हैं।

एक अन्य महत्वपूर्ण बिंदु है जिसमें Excel संस्करण फ़ाइल है।

मैं, दुर्भाग्य से, कहता हूं, कार्यालय स्वचालन के साथ सभी तरीकों से काम करने का एक मजबूत अनुभव, भले ही अनुप्रयोग स्वचालन, डेटा प्रबंधन और प्लगइन्स जैसी अवधारणाओं में घिरा हुआ हो, और आम तौर पर मैं एक्सेल ऑटोमेशन या ऑफिस ऑटोमेशन का उपयोग करने के लिए केवल अंतिम उपाय के रूप में सुझाव देता हूं डेटा पढ़ें; बस उस कार्य को पूरा करने के लिए बेहतर तरीके नहीं हैं।

स्वचालन के साथ कार्य करना, संसाधन की लागत के संदर्भ में भारी हो सकता है, उदाहरण के लिए सुरक्षा से संबंधित अन्य मुद्दों में और अधिक, और आखिरी हो सकता है लेकिन कम से कम, COM इंटरॉप के साथ काम करना यह "निशुल्क" नहीं है .. तो मेरा सुझाव लगता है और अपनी आवश्यकताओं के भीतर स्थिति का विश्लेषण और फिर बेहतर तरीका ले लो।

 try { DataTable sheet1 = new DataTable("Excel Sheet"); OleDbConnectionStringBuilder csbuilder = new OleDbConnectionStringBuilder(); csbuilder.Provider = "Microsoft.ACE.OLEDB.12.0"; csbuilder.DataSource = fileLocation; csbuilder.Add("Extended Properties", "Excel 12.0 Xml;HDR=YES"); string selectSql = @"SELECT * FROM [Sheet1$]"; using (OleDbConnection connection = new OleDbConnection(csbuilder.ConnectionString)) using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectSql, connection)) { connection.Open(); adapter.Fill(sheet1); } } catch (Exception e) { Console.WriteLine(e.Message); } 

यह मेरे लिए काम किया कृपया इसे प्रयास करें और मुझे क्वेरीज़ के लिए बताएँ

Excel फ़ाइलों के साथ संवाद करने के लिए OLEDB कनेक्शन का उपयोग करें यह बेहतर परिणाम देता है

 using System.Data.OleDb; string physicalPath = "Your Excel file physical path"; OleDbCommand cmd = new OleDbCommand(); OleDbDataAdapter da = new OleDbDataAdapter(); DataSet ds = new DataSet(); String strNewPath = physicalPath; String connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; String query = "SELECT * FROM [Sheet1$]"; // You can use any different queries to get the data from the excel sheet OleDbConnection conn = new OleDbConnection(connString); if (conn.State == ConnectionState.Closed) conn.Open(); try { cmd = new OleDbCommand(query, conn); da = new OleDbDataAdapter(cmd); da.Fill(ds); } catch { // Exception Msg } finally { da.Dispose(); conn.Close(); } 

आउटपुट डेटा डेटासेट में डेटासेट ऑब्जेक्ट का उपयोग करके डेटासेट में संग्रहीत किया जाएगा, जिससे आप आसानी से डेटासेट एक्सेस कर सकते हैं। आशा है कि यह उपयोगी हो सकता है

एक्सेल फाइल रीडर और लेखक एक्सेल बिना यू'र सिस्टम पर

  • डाउनलोड करें और एनपीओआई यूआर परियोजना के लिए डीएलएल जोड़ें।
  • एक्सेल फ़ाइल पढ़ने के लिए इस कोड का उपयोग करना

      using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { XSSFWorkbook XSSFWorkbook = new XSSFWorkbook(file); } ISheet objxlWorkSheet = XSSFWorkbook.GetSheetAt(0); int intRowCount = 1; int intColumnCount = 0; for (; ; ) { IRow Row = objxlWorkSheet.GetRow(intRowCount); if (Row != null) { ICell Cell = Row.GetCell(0); ICell objCell = objxlWorkSheet.GetRow(intRowCount).GetCell(intColumnCount); }} 

ओपन एक्सएमएल का उपयोग करें

विशिष्ट टैब या पत्रक के नाम के साथ एक स्प्रेडशीट को संसाधित करने के लिए यहां कुछ कोड है और इसे सीएसवी जैसी कुछ चीज़ों के लिए डंप करें। (मैंने कॉमा के बजाय एक पाइप चुना)।

मेरा मानना ​​है कि सेल से मूल्य प्राप्त करना आसान होता है, लेकिन मुझे लगता है कि हम यही साथ फंस गए हैं। आप देख सकते हैं कि मैं MSDN दस्तावेज़ों का संदर्भ देता हूं जहां मुझे इस कोड का अधिकतर मिला। यही मायक्रोसॉफ्ट की सिफारिश है

  /// <summary> /// Got code from: https://msdn.microsoft.com/en-us/library/office/gg575571.aspx /// </summary> [Test] public void WriteOutExcelFile() { var fileName = "ExcelFiles\\File_With_Many_Tabs.xlsx"; var sheetName = "Submission Form"; // Existing tab name. using (var document = SpreadsheetDocument.Open(fileName, isEditable: false)) { var workbookPart = document.WorkbookPart; var sheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault(s => s.Name == sheetName); var worksheetPart = (WorksheetPart)(workbookPart.GetPartById(sheet.Id)); var sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); foreach (var row in sheetData.Elements<Row>()) { foreach (var cell in row.Elements<Cell>()) { Console.Write("|" + GetCellValue(cell, workbookPart)); } Console.Write("\n"); } } } /// <summary> /// Got code from: https://msdn.microsoft.com/en-us/library/office/hh298534.aspx /// </summary> /// <param name="cell"></param> /// <param name="workbookPart"></param> /// <returns></returns> private string GetCellValue(Cell cell, WorkbookPart workbookPart) { if (cell == null) { return null; } var value = cell.CellFormula != null ? cell.CellValue.InnerText : cell.InnerText.Trim(); // If the cell represents an integer number, you are done. // For dates, this code returns the serialized value that // represents the date. The code handles strings and // Booleans individually. For shared strings, the code // looks up the corresponding value in the shared string // table. For Booleans, the code converts the value into // the words TRUE or FALSE. if (cell.DataType == null) { return value; } switch (cell.DataType.Value) { case CellValues.SharedString: // For shared strings, look up the value in the // shared strings table. var stringTable = workbookPart.GetPartsOfType<SharedStringTablePart>() .FirstOrDefault(); // If the shared string table is missing, something // is wrong. Return the index that is in // the cell. Otherwise, look up the correct text in // the table. if (stringTable != null) { value = stringTable.SharedStringTable .ElementAt(int.Parse(value)).InnerText; } break; case CellValues.Boolean: switch (value) { case "0": value = "FALSE"; break; default: value = "TRUE"; break; } break; } return value; } 

सर्वर साइड ऐप पर एक्सेल फाइलों को पढ़ने का अनुशंसित तरीका ओपन एक्सएमएल है।

कुछ लिंक साझा करना –

https://msdn.microsoft.com/en-us/library/office/hh298534.aspx

https://msdn.microsoft.com/en-us/library/office/ff478410.aspx

https://msdn.microsoft.com/en-us/library/office/cc823095.aspx

 public void excelRead(string sheetName) { Excel.Application appExl = new Excel.Application(); Excel.Workbook workbook = null; try { string methodName = ""; Excel.Worksheet NwSheet; Excel.Range ShtRange; //Opening Excel file(myData.xlsx) appExl = new Excel.Application(); workbook = appExl.Workbooks.Open(sheetName, Missing.Value, ReadOnly: false); NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1); ShtRange = NwSheet.UsedRange; //gives the used cells in sheet int rCnt1 = 0; int cCnt1 = 0; for (rCnt1 = 1; rCnt1 <= ShtRange.Rows.Count; rCnt1++) { for (cCnt1 = 1; cCnt1 <= ShtRange.Columns.Count; cCnt1++) { if (Convert.ToString(NwSheet.Cells[rCnt1, cCnt1].Value2) == "Y") { methodName = NwSheet.Cells[rCnt1, cCnt1 - 2].Value2; Type metdType = this.GetType(); MethodInfo mthInfo = metdType.GetMethod(methodName); if (Convert.ToString(NwSheet.Cells[rCnt1, cCnt1 - 2].Value2) == "fn_AddNum" || Convert.ToString(NwSheet.Cells[rCnt1, cCnt1 - 2].Value2) == "fn_SubNum") { StaticVariable.intParam1 = Convert.ToInt32(NwSheet.Cells[rCnt1, cCnt1 + 3].Value2); StaticVariable.intParam2 = Convert.ToInt32(NwSheet.Cells[rCnt1, cCnt1 + 4].Value2); object[] mParam1 = new object[] { StaticVariable.intParam1, StaticVariable.intParam2 }; object result = mthInfo.Invoke(this, mParam1); StaticVariable.intOutParam1 = Convert.ToInt32(result); NwSheet.Cells[rCnt1, cCnt1 + 5].Value2 = Convert.ToString(StaticVariable.intOutParam1) != "" ? Convert.ToString(StaticVariable.intOutParam1) : String.Empty; } else { object[] mParam = new object[] { }; mthInfo.Invoke(this, mParam); NwSheet.Cells[rCnt1, cCnt1 + 5].Value2 = StaticVariable.outParam1 != "" ? StaticVariable.outParam1 : String.Empty; NwSheet.Cells[rCnt1, cCnt1 + 6].Value2 = StaticVariable.outParam2 != "" ? StaticVariable.outParam2 : String.Empty; } NwSheet.Cells[rCnt1, cCnt1 + 1].Value2 = StaticVariable.resultOut; NwSheet.Cells[rCnt1, cCnt1 + 2].Value2 = StaticVariable.resultDescription; } else if (Convert.ToString(NwSheet.Cells[rCnt1, cCnt1].Value2) == "N") { MessageBox.Show("Result is No"); } else if (Convert.ToString(NwSheet.Cells[rCnt1, cCnt1].Value2) == "EOF") { MessageBox.Show("End of File"); } } } workbook.Save(); workbook.Close(true, Missing.Value, Missing.Value); appExl.Quit(); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ShtRange); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(NwSheet); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(appExl); } catch (Exception) { workbook.Close(true, Missing.Value, Missing.Value); } finally { GC.Collect(); GC.WaitForPendingFinalizers(); System.Runtime.InteropServices.Marshal.CleanupUnusedObjectsInCurrentContext(); } } //code for reading excel data in datatable public void testExcel(string sheetName) { try { MessageBox.Show(sheetName); foreach(Process p in Process.GetProcessesByName("EXCEL")) { p.Kill(); } //string fileName = "E:\\inputSheet"; Excel.Application oXL; Workbook oWB; Worksheet oSheet; Range oRng; // creat a Application object oXL = new Excel.Application(); // get WorkBook object oWB = oXL.Workbooks.Open(sheetName); // get WorkSheet object oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oWB.Sheets[1]; System.Data.DataTable dt = new System.Data.DataTable(); //DataSet ds = new DataSet(); //ds.Tables.Add(dt); DataRow dr; StringBuilder sb = new StringBuilder(); int jValue = oSheet.UsedRange.Cells.Columns.Count; int iValue = oSheet.UsedRange.Cells.Rows.Count; // get data columns for (int j = 1; j <= jValue; j++) { oRng = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[1, j]; string strValue = oRng.Text.ToString(); dt.Columns.Add(strValue, System.Type.GetType("System.String")); } //string colString = sb.ToString().Trim(); //string[] colArray = colString.Split(':'); // get data in cell for (int i = 2; i <= iValue; i++) { dr = dt.NewRow(); for (int j = 1; j <= jValue; j++) { oRng = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[i, j]; string strValue = oRng.Text.ToString(); dr[j - 1] = strValue; } dt.Rows.Add(dr); } if(StaticVariable.dtExcel != null) { StaticVariable.dtExcel.Clear(); StaticVariable.dtExcel = dt.Copy(); } else StaticVariable.dtExcel = dt.Copy(); oWB.Close(true, Missing.Value, Missing.Value); oXL.Quit(); MessageBox.Show(sheetName); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { } } //code for class initialize public static void startTesting(TestContext context) { Playback.Initialize(); ReadExcel myClassObj = new ReadExcel(); string sheetName=""; StreamReader sr = new StreamReader(@"E:\SaveSheetName.txt"); sheetName = sr.ReadLine(); sr.Close(); myClassObj.excelRead(sheetName); myClassObj.testExcel(sheetName); } //code for test initalize public void runValidatonTest() { DataTable dtFinal = StaticVariable.dtExcel.Copy(); for (int i = 0; i < dtFinal.Rows.Count; i++) { if (TestContext.TestName == dtFinal.Rows[i][2].ToString() && dtFinal.Rows[i][3].ToString() == "Y" && dtFinal.Rows[i][4].ToString() == "TRUE") { MessageBox.Show(TestContext.TestName); MessageBox.Show(dtFinal.Rows[i][2].ToString()); StaticVariable.runValidateResult = "true"; break; } } //StaticVariable.dtExcel = dtFinal.Copy(); } 

मैं आपको बीटस्केप स्प्रेडशीट का उपयोग करने की सलाह देता हूं।

https://bytescout.com/products/developer/spreadsheetsdk/bytescoutspreadsheetsdk.html

मैंने इसे यूनिटी 3 डी में मोनोडेबैड के साथ करने की कोशिश की और यह काफी सीधे आगे है। पुस्तकालय कैसे काम करता है यह देखने के लिए इस नमूना कोड की जांच करें:

https://bytescout.com/products/developer/spreadsheetsdk/read-write-excel.html