শীট অর্ডারে শীটের নাম পেতে এক্সেল ওলেডিবি ব্যবহার করা


103

আমি অনেক শীট সহ একটি এক্সেল ওয়ার্কবুক থেকে পড়তে ওলিডিবি ব্যবহার করছি।

আমাকে শীটের নামগুলি পড়তে হবে, তবে সেগুলি স্প্রেডশীটে সংজ্ঞায়িত ক্রমে আমার প্রয়োজন; সুতরাং আমার কাছে যদি এমন কোনও ফাইল থাকে যা দেখে মনে হয়;

|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/

তারপরে আমার অভিধান নেওয়া দরকার

1="GERMANY", 
2="UK", 
3="IRELAND"

আমি ব্যবহার করার চেষ্টা করেছি OleDbConnection.GetOleDbSchemaTable(), এবং এটি আমাকে নামের তালিকা দেয় তবে এটি বর্ণমালা অনুসারে বাছাই করে। আলফা-সাজানোর অর্থ কোনও নির্দিষ্ট নামের সাথে কোন শিট সংখ্যার সাথে মিল রয়েছে তা আমি জানি না। তাই আমি পাই;

GERMANY, IRELAND, UK

যা ক্রম পরিবর্তিত হয়েছে UKএবং IRELAND

আমার এটির বাছাই করার কারণটি হ'ল আমাকে ব্যবহারকারীকে নাম বা সূচী অনুসারে বিভিন্ন ধরণের ডেটা বেছে নিতে দিতে হবে; তারা 'জার্মানি থেকে আইআরল্যান্ডে সমস্ত ডেটা' বা 'শীট 1 থেকে শীট 3 পর্যন্ত ডেটা' চাইতে পারে।

কোন ধারনা ব্যাপকভাবে প্রশংসা হবে।

আমি যদি অফিস ইন্টারপ ক্লাসগুলি ব্যবহার করতে পারি তবে এটি সোজা হবে। দুর্ভাগ্যক্রমে, আমি পারিনা কারণ ইন্টারপ ক্লাসগুলি উইন্ডোজ পরিষেবা এবং এএসপি.নেট সাইটগুলির মতো অ-ইন্টারেক্টিভ পরিবেশে নির্ভরযোগ্যভাবে কাজ করে না, তাই আমার OLEDB ব্যবহার করা দরকার।


আপনি এক্সেল ফাইলের কোন সংস্করণটি পড়ছেন?
ইয়ামেন

30
বাহ আপনি কীভাবে এটি আঁকলেন এবং কীভাবে আঁকতে আপনার ধৈর্য রয়েছে
এঁকেছিলেন

4
@ АртёмЦарионов - তারা টেবিলের জন্য উল্লম্ব বার (|) এবং আন্ডারস্কোর (_) এর সারি এবং ট্যাবগুলির জন্য পিছনে এবং ফরোয়ার্ড-স্ল্যাশ (\ /)। এটি একটি পাঠ্য সম্পাদকে অনুলিপি করুন এবং আপনি দেখতে পাবেন।
সিড হল্যান্ড

উত্তর:


17

এটি প্রকৃত এমএসডিএন ডকুমেন্টেশনে খুঁজে পাচ্ছে না, তবে ফোরামে একজন মডারেটর ড

আমি আশঙ্কা করছি যে ওএইএলডিবি শীট আদেশটি যেমন এক্সেলে ছিল তেমন সংরক্ষণ করে না

শীট অর্ডারে এক্সেল শিটের নাম

মনে হচ্ছে এটি একটি সাধারণ যথেষ্ট প্রয়োজনীয়তা যে এখানে একটি শালীন কাজ হবে।


তবে এটি সরাসরি উত্তর দেয়, এটি অপ্রয়োজনীয় চেষ্টাগুলিতে প্রচুর সময় সাশ্রয় করে।
শিহে ঝাং

75

আপনি কি শিটের মাধ্যমে 0 থেকে নাম গণনা -1 নাম্বার লুপ করতে পারবেন না? এইভাবে আপনার তাদের সঠিক ক্রমে পাওয়া উচিত।

সম্পাদন করা

আমি মন্তব্যগুলির মাধ্যমে লক্ষ্য করেছি যে শীটের নামগুলি পুনরুদ্ধার করতে ইন্টারপ ক্লাসগুলি ব্যবহার করার বিষয়ে অনেক উদ্বেগ রয়েছে। সুতরাং এগুলি পুনরুদ্ধার করতে OLEDB ব্যবহার করে এখানে একটি উদাহরণ রয়েছে:

/// <summary>
/// This method retrieves the excel sheet names from 
/// an excel workbook.
/// </summary>
/// <param name="excelFile">The excel file.</param>
/// <returns>String[]</returns>
private String[] GetExcelSheetNames(string excelFile)
{
    OleDbConnection objConn = null;
    System.Data.DataTable dt = null;

    try
    {
        // Connection String. Change the excel file to the file you
        // will search.
        String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
          "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
        // Create connection object by using the preceding connection string.
        objConn = new OleDbConnection(connString);
        // Open connection with the database.
        objConn.Open();
        // Get the data table containg the schema guid.
        dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        if(dt == null)
        {
           return null;
        }

        String[] excelSheets = new String[dt.Rows.Count];
        int i = 0;

        // Add the sheet name to the string array.
        foreach(DataRow row in dt.Rows)
        {
           excelSheets[i] = row["TABLE_NAME"].ToString();
           i++;
        }

        // Loop through all of the sheets if you want too...
        for(int j=0; j < excelSheets.Length; j++)
        {
            // Query each excel sheet.
        }

        return excelSheets;
   }
   catch(Exception ex)
   {
       return null;
   }
   finally
   {
      // Clean up.
      if(objConn != null)
      {
          objConn.Close();
          objConn.Dispose();
      }
      if(dt != null)
      {
          dt.Dispose();
      }
   }
}

কোডপ্রজেক্টের নিবন্ধ থেকে বের করা হয়েছে ।


এই কোডটি আমি দেখতে চাই! আপনি কীভাবে 'নবম পত্রক' এবং পত্রকের সংখ্যা সম্পর্কে জিজ্ঞাসা করতে পারেন?
স্টিভ কুপার

13
হাই জেমস. এটি আমার আসল সমস্যাটি - যদিও GetOleDbSchemaTable () পদ্ধতিটি নামগুলি পেয়েছে, সারি নম্বরটি ওয়ার্কবুক শিট সংখ্যার সাথে সামঞ্জস্য নয়। বর্ণমালায় এটি প্রথম হলে শিট 4 এর সারি 0 হবে 0
স্টিভ কুপার

23
পোস্টারদের প্রশ্নের উত্তর দেয় না (তিনি এটি এক্সেলের উপস্থিতির ক্রমে চান)
অ্যান্ড্রু হোয়াইট

7
@ সামুয়েল আমার মনে হয় না যে এটি ওপির সমস্যাটি সরাসরি সমাধান করেছে, তবে মনে হচ্ছে এটি একই রকম সমস্যা নিয়ে আরও অনেককে সহায়তা করবে।
জেমস

1
ওপির প্রশ্নটি সমাধান করে না, যা আমি অনুসন্ধান করতে এসেছি। (আমি সর্বদা একটি ডাউনটোটের কারণ পোস্ট করি))
ফিল নিকোলাস

23

যেহেতু উপরের কোডটিতে এক্সেল 2007 এর জন্য শিটের নামের তালিকা আহরণের জন্য পদ্ধতিগুলি অন্তর্ভুক্ত করা হয়নি, তাই নিম্নলিখিত কোডটি এক্সেল (97-2003) এবং এক্সেল 2007 উভয়ের জন্য প্রযোজ্য:

public List<string> ListSheetInExcel(string filePath)
{
   OleDbConnectionStringBuilder sbConnection = new OleDbConnectionStringBuilder();
   String strExtendedProperties = String.Empty;
   sbConnection.DataSource = filePath;
   if (Path.GetExtension(filePath).Equals(".xls"))//for 97-03 Excel file
   {
      sbConnection.Provider = "Microsoft.Jet.OLEDB.4.0";
      strExtendedProperties = "Excel 8.0;HDR=Yes;IMEX=1";//HDR=ColumnHeader,IMEX=InterMixed
   }
   else if (Path.GetExtension(filePath).Equals(".xlsx"))  //for 2007 Excel file
   {
      sbConnection.Provider = "Microsoft.ACE.OLEDB.12.0";
      strExtendedProperties = "Excel 12.0;HDR=Yes;IMEX=1";
   }
   sbConnection.Add("Extended Properties",strExtendedProperties);
   List<string> listSheet = new List<string>();
   using (OleDbConnection conn = new OleDbConnection(sbConnection.ToString()))
   {
     conn.Open();
     DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);         
     foreach (DataRow drSheet in dtSheet.Rows)
     {
        if (drSheet["TABLE_NAME"].ToString().Contains("$"))//checks whether row contains '_xlnm#_FilterDatabase' or sheet name(i.e. sheet name always ends with $ sign)
        {
             listSheet.Add(drSheet["TABLE_NAME"].ToString());
        } 
     }
  }
 return listSheet;
}

উভয় এক্সেল ধরণের (97,2003,2007) জন্য নির্দিষ্ট এক্সেল ফাইলের উপরে ফাংশন শীটটির তালিকা দেয়।


11
এই কোডটি শীটগুলিতে এক্সেল হিসাবে প্রদর্শিত হবে তার ক্রমটি ফিরিয়ে দেয় না
অ্যান্ড্রু হোয়াইট

10

এটি সংক্ষিপ্ত, দ্রুত, নিরাপদ এবং ব্যবহারযোগ্য ...

public static List<string> ToExcelsSheetList(string excelFilePath)
{
    List<string> sheets = new List<string>();
    using (OleDbConnection connection = 
            new OleDbConnection((excelFilePath.TrimEnd().ToLower().EndsWith("x")) 
            ? "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + excelFilePath + "';" + "Extended Properties='Excel 12.0 Xml;HDR=YES;'"
            : "provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + excelFilePath + "';Extended Properties=Excel 8.0;"))
    {
        connection.Open();
        DataTable dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        foreach (DataRow drSheet in dt.Rows)
            if (drSheet["TABLE_NAME"].ToString().Contains("$"))
            {
                string s = drSheet["TABLE_NAME"].ToString();
                sheets.Add(s.StartsWith("'")?s.Substring(1, s.Length - 3): s.Substring(0, s.Length - 1));
            }
        connection.Close();
    }
    return sheets;
}

"বাক্সের বাইরে" কাজ করে না। exceladdress- এটা কি?
মাইকেল হাটার

8

অন্য উপায়:

একটি এক্সএলএস (এক্স) ফাইল হ'ল * .জিপ ধারকটিতে সঞ্চিত * .xML ফাইলের সংগ্রহ। ফোল্ডার ডকপ্রপগুলিতে "app.xML" ফাইলটি আনজিপ করুন।

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<Properties xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties">
<TotalTime>0</TotalTime>
<Application>Microsoft Excel</Application>
<DocSecurity>0</DocSecurity>
<ScaleCrop>false</ScaleCrop>
-<HeadingPairs>
  -<vt:vector baseType="variant" size="2">
    -<vt:variant>
      <vt:lpstr>Arbeitsblätter</vt:lpstr>
    </vt:variant>
    -<vt:variant>
      <vt:i4>4</vt:i4>
    </vt:variant>
  </vt:vector>
</HeadingPairs>
-<TitlesOfParts>
  -<vt:vector baseType="lpstr" size="4">
    <vt:lpstr>Tabelle3</vt:lpstr>
    <vt:lpstr>Tabelle4</vt:lpstr>
    <vt:lpstr>Tabelle1</vt:lpstr>
    <vt:lpstr>Tabelle2</vt:lpstr>
  </vt:vector>
</TitlesOfParts>
<Company/>
<LinksUpToDate>false</LinksUpToDate>
<SharedDoc>false</SharedDoc>
<HyperlinksChanged>false</HyperlinksChanged>
<AppVersion>14.0300</AppVersion>
</Properties>

ফাইলটি একটি জার্মান ফাইল (আরবিটসব্লাইটার = কর্মপত্রক)। সারণির নামগুলি (ট্যাবেলে 3 ইত্যাদি) সঠিক ক্রমে রয়েছে। আপনাকে কেবল এই ট্যাগগুলি পড়তে হবে;)

শুভেচ্ছা


1
এটি xlsx ফাইলের জন্য ভাল কাজ করে তবে xls ফাইলগুলিতে নয়। তাদের একই কাঠামো নেই। আপনি কি জানেন যে কীভাবে একটি এক্সএলএস ফাইল থেকে একই ডেটা বের করা যেতে পারে?
rdans

6

আমি @ ক্র্যাপি ( https://stackoverflow.com/a/19930386/2617732 ) এর উত্তরে প্রদত্ত তথ্য ব্যবহার করে নীচের ফাংশনটি তৈরি করেছি । এটির জন্য। নেট ফ্রেমওয়ার্ক v4.5 ব্যবহার করা প্রয়োজন এবং System.IO.Compression এর একটি রেফারেন্স প্রয়োজন। এটি কেবল xlsx ফাইলের জন্য কাজ করে, পুরানো এক্সএলএস ফাইলগুলির জন্য নয়।

    using System.IO.Compression;
    using System.Xml;
    using System.Xml.Linq;

    static IEnumerable<string> GetWorksheetNamesOrdered(string fileName)
    {
        //open the excel file
        using (FileStream data = new FileStream(fileName, FileMode.Open))
        {
            //unzip
            ZipArchive archive = new ZipArchive(data);

            //select the correct file from the archive
            ZipArchiveEntry appxmlFile = archive.Entries.SingleOrDefault(e => e.FullName == "docProps/app.xml");

            //read the xml
            XDocument xdoc = XDocument.Load(appxmlFile.Open());

            //find the titles element
            XElement titlesElement = xdoc.Descendants().Where(e => e.Name.LocalName == "TitlesOfParts").Single();

            //extract the worksheet names
            return titlesElement
                .Elements().Where(e => e.Name.LocalName == "vector").Single()
                .Elements().Where(e => e.Name.LocalName == "lpstr")
                .Select(e => e.Value);
        }
    }

2

আমি শীটগুলির নামটিকে 1_ জার্মানি, 2_ ইউকে, 3_আইআরল্যান্ড হিসাবে নামকরণের জন্য @ ডেথ অ্যাপ্রিলের ধারণাটি পছন্দ করি। কয়েকশ শীটের এই নামকরণটি করার জন্য আমি আপনার সমস্যাটি পেয়েছি। আপনার যদি শীটের নামটি পুনঃনামকরণ করতে সমস্যা না হয় তবে আপনি এটি করার জন্য এই ম্যাক্রোটি ব্যবহার করতে পারেন। সমস্ত শীটের নাম পরিবর্তন করতে কয়েক সেকেন্ডেরও কম সময় লাগবে। দুর্ভাগ্যক্রমে ওডিবিসি, ওডিইডিবি এসি দ্বারা শিটের নাম আদেশটি ফিরিয়ে দেয়। তার কোনও প্রতিস্থাপন নেই। ক্রমে থাকার জন্য আপনাকে হয় COM ব্যবহার করতে হবে বা আপনার নামটি পুনরায় নামকরণ করতে হবে।

Sub Macro1()
'
' Macro1 Macro
'

'
Dim i As Integer
For i = 1 To Sheets.Count
 Dim prefix As String
 prefix = i
 If Len(prefix) < 4 Then
  prefix = "000"
 ElseIf Len(prefix) < 3 Then
  prefix = "00"
 ElseIf Len(prefix) < 2 Then
  prefix = "0"
 End If
 Dim sheetName As String
 sheetName = Sheets(i).Name
 Dim names
 names = Split(sheetName, "-")
 If (UBound(names) > 0) And IsNumeric(names(0)) Then
  'do nothing
 Else
  Sheets(i).Name = prefix & i & "-" & Sheets(i).Name
 End If
Next

End Sub

আপডেট: বিআইএফএফ সম্পর্কিত @ সিডহোল্যান্ডের মন্তব্য পড়ার পরে একটি ধারণা ঝলসে উঠল। নিম্নলিখিত পদক্ষেপগুলি কোডের মাধ্যমে করা যেতে পারে। একই ক্রমে শীটের নামগুলি পেতে যদি আপনি সত্যিই এটি করতে চান তা জানেন না। কোডের মাধ্যমে এটি করতে আপনার যদি সাহায্যের প্রয়োজন হয় তবে আমাকে জানান।

1. Consider XLSX as a zip file. Rename *.xlsx into *.zip
2. Unzip
3. Go to unzipped folder root and open /docprops/app.xml
4. This xml contains the sheet name in the same order of what you see.
5. Parse the xml and get the sheet names

আপডেট: আরেকটি সমাধান - এনপিওআই এখানে সহায়ক হতে পারে http://npoi.codeplex.com/

 FileStream file = new FileStream(@"yourexcelfilename", FileMode.Open, FileAccess.Read);

      HSSFWorkbook  hssfworkbook = new HSSFWorkbook(file);
        for (int i = 0; i < hssfworkbook.NumberOfSheets; i++)
        {
            Console.WriteLine(hssfworkbook.GetSheetName(i));
        }
        file.Close();

এই সমাধানটি xls এর জন্য কাজ করে। আমি এক্সএলএসএক্স চেষ্টা করিনি।

ধন্যবাদ,

Esen


1
আপনি না আছে চাদর নামান্তর করতে বা শুধুমাত্র এর COM ব্যবহার আমার উত্তর প্রমান আপনি দাও ব্যবহার করতে পারেন। আমি মনে করি বিআইএফএফ পড়ে তাদের পুনরুদ্ধার করার উপায়ও থাকতে পারে তবে আমি এখনও এটি তদন্ত করছি।
সিড হল্যান্ড

1
@ সিডহোল্যান্ড: ডিএও একটি COM উপাদান। সার্ভার ২০০ in এ COM উপাদান ব্যবহার করা একটি সমস্যা তাই স্টিভ ADO.NET
Esen

আমার মস্তিষ্কটি ডগা দেয়নি যে ডিএও এটি একটি সিওএম উপাদান, যদিও এটি ব্যবহারের জন্য সিওএম রেফারেন্স হিসাবে যুক্ত করার পরেও। সংশোধনীর জন্য ধন্যবাদ. আপনার সংযোজন (একটি জিপ নামকরণ এবং এক্সএমএল পড়া) প্রতিভা। আমার ধারণা ছিল না যে এটি কাজ করবে। এটি এখন পর্যন্ত একমাত্র পদ্ধতি যা COM ব্যবহার না করে শিটগুলি ক্রমে প্রদর্শন করবে। +1 টি!
সিড হল্যান্ড

1

এটি আমার পক্ষে কাজ করেছে। এখান থেকে চুরি: আপনি কীভাবে কোনও এক্সেল ওয়ার্কবুকের প্রথম পৃষ্ঠার নাম পাবেন?

object opt = System.Reflection.Missing.Value;
Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbook workbook = app.Workbooks.Open(WorkBookToOpen,
                                         opt, opt, opt, opt, opt, opt, opt,
                                         opt, opt, opt, opt, opt, opt, opt);
Excel.Worksheet worksheet = workbook.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
string firstSheetName = worksheet.Name;

2
ওহে. আপনি কাজ করার কোড পেয়েছেন খুশি, তবে এটি ইন্টারপ ক্লাসগুলি ব্যবহার করে এবং তারা কোনও সার্ভারে নির্ভরযোগ্যভাবে কাজ করে না; আপনি এই কোডটি উইন্ডোজ সার্ভার ২০০৮ এ চালাতে পারবেন না So সুতরাং আপনি এটি কোনও ওয়েব অ্যাপ্লিকেশন বা সার্ভার-সাইড কোডে ব্যবহার করতে পারবেন না। এজন্য আমি ইন্টারপের পরিবর্তে ওলেডব যাচ্ছিলাম।
স্টিভ কুপার

1

এটা চেষ্টা কর. শিটের নামগুলি ক্রমে পেতে কোড এখানে।

private Dictionary<int, string> GetExcelSheetNames(string fileName)
{
    Excel.Application _excel = null;
    Excel.Workbook _workBook = null;
    Dictionary<int, string> excelSheets = new Dictionary<int, string>();
    try
    {
        object missing = Type.Missing;
        object readOnly = true;
        Excel.XlFileFormat.xlWorkbookNormal
        _excel = new Excel.ApplicationClass();
        _excel.Visible = false;
        _workBook = _excel.Workbooks.Open(fileName, 0, readOnly, 5, missing,
            missing, true, Excel.XlPlatform.xlWindows, "\\t", false, false, 0, true, true, missing);
        if (_workBook != null)
        {
            int index = 0;
            foreach (Excel.Worksheet sheet in _workBook.Sheets)
            {
                // Can get sheet names in order they are in workbook
                excelSheets.Add(++index, sheet.Name);
            }
        }
    }
    catch (Exception e)
    {
        return null;
    }
    finally
    {
        if (_excel != null)
        {

            if (_workBook != null)
                _workBook.Close(false, Type.Missing, Type.Missing);
            _excel.Application.Quit();
        }
        _excel = null;
        _workBook = null;
    }
    return excelSheets;
}

এই নিখট মেল সংকলন! (জেইল Excel.XlFileFormat.xlWorkbookNormal)
মাইকেল হাটার

0

এমএসডিএন অনুসারে এক্সেলের অভ্যন্তরে স্প্রেডশিটগুলির ক্ষেত্রে এটি কাজ নাও করতে পারে কারণ এক্সেল ফাইলগুলি সত্যিকারের ডাটাবেস নয়। সুতরাং আপনি শিটের নামটি ওয়ার্কবুকটিতে তাদের ভিজ্যুয়ালাইজেশন অনুসারে পেতে পারবেন না।

ইন্টারপ ব্যবহার করে চাক্ষুষের চেহারা অনুসারে শীটের নাম পাওয়ার কোড:

মাইক্রোসফ্ট এক্সেল 12.0 অবজেক্ট লাইব্রেরিতে রেফারেন্স যুক্ত করুন।

নিম্নলিখিত কোডটি শীটটির নাম ওয়ার্কবুকে সঞ্চিত প্রকৃত অর্ডারে দেবে, বাছাই করা নাম নয়।

কোডের উদাহরণ:

using Microsoft.Office.Interop.Excel;

string filename = "C:\\romil.xlsx";

object missing = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbook wb =excel.Workbooks.Open(filename,  missing,  missing,  missing,  missing,missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing);

ArrayList sheetname = new ArrayList();

foreach (Microsoft.Office.Interop.Excel.Worksheet  sheet in wb.Sheets)
{
    sheetname.Add(sheet.Name);
}

0

আমি কোনও ডকুমেন্টেশন দেখতে পাচ্ছি না যা বলেছে অ্যাপ.এক্সএমএল আদেশটি শীটের ক্রম হিসাবে গ্যারান্টিযুক্ত। এটি সম্ভবত, তবে OOXML স্পেসিফিকেশন অনুযায়ী নয়।

অন্যদিকে workbook.xML ফাইলটিতে শীটআইডি বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে, যা ক্রম নির্ধারণ করে - 1 থেকে শীটের সংখ্যা পর্যন্ত she এটি OOXML স্পেসিফিকেশন অনুসারে according ওয়ার্কবুক.এক্সএমএলকে শিটের ক্রমটি যেখানে রাখা হয়েছে তা স্থান হিসাবে বর্ণনা করা হয়েছে।

সুতরাং XLSX ফর্মটি বের করার পরে workbook.xML পড়া আমার প্রস্তাবনা হবে। অ্যাপ.এক্সএমএল নয়। ডকপ্রপস / অ্যাপ.এক্সএমএল পরিবর্তে, এক্সএল / ওয়ার্কবুক.এক্সএমএল ব্যবহার করুন এবং উপাদানটি এখানে দেখুন যেমন দেখুন -

`

<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="9303" /> 
  <workbookPr defaultThemeVersion="124226" /> 
- <bookViews>
  <workbookView xWindow="120" yWindow="135" windowWidth="19035" windowHeight="8445" /> 
  </bookViews>
- <sheets>
  <sheet name="By song" sheetId="1" r:id="rId1" /> 
  <sheet name="By actors" sheetId="2" r:id="rId2" /> 
  <sheet name="By pit" sheetId="3" r:id="rId3" /> 
  </sheets>
- <definedNames>
  <definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">'By song'!$A$1:$O$59</definedName> 
  </definedNames>
  <calcPr calcId="145621" /> 
  </workbook>

`

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.