एक्सेल टेबल पर SQL क्वेरी कैसे चलाएं?


83

मैं उन सभी अंतिम नाम फ़ील्डों की एक अन्य तालिका से एक उप-तालिका बनाने की कोशिश कर रहा हूं, जिसमें एक ऐसा फोन नंबर फ़ील्ड है, जो शून्य नहीं है। मैं SQL के साथ यह बहुत आसान कर सकता था, लेकिन मुझे कोई सुराग नहीं है कि एक्सेल के भीतर SQL क्वेरी चलाने के बारे में कैसे जाना जाए। मुझे डेटा को postgresql में आयात करने के लिए लुभाया जाता है और इसे वहां क्वेरी किया जाता है, लेकिन यह थोड़ा अधिक लगता है।

मैं जो करने की कोशिश कर रहा हूं, उसके लिए SQL क्वेरी SELECT lastname, firstname, phonenumber WHERE phonenumber IS NOT NULL ORDER BY lastnameट्रिक करेगी। यह बहुत आसान लगता है कि यह कुछ ऐसा है जो एक्सेल मूल रूप से नहीं कर सकता है। मैं एक्सेल के भीतर इस तरह से SQL क्वेरी कैसे चला सकता हूं?


क्या आप इसे SQL में स्वयं करना चाहते हैं, या किसी एप्लिकेशन के भीतर से?
जॉन बिंघम

2
मैंने इसकी पूरी जाँच की है और exceldevelopmentplatform.blogspot.com/2018/10/…
S

जवाबों:


70

इसे पूरा करने के कई बेहतरीन तरीके हैं, जो दूसरों ने पहले ही सुझाए हैं। "SQL ट्रैक के माध्यम से एक्सेल डेटा प्राप्त करें" के साथ, यहां कुछ संकेत दिए गए हैं।

  1. Excel में "डेटा कनेक्शन विज़ार्ड" है जो आपको किसी अन्य डेटा स्रोत से आयात करने या लिंक करने की अनुमति देता है या यहां तक ​​कि बहुत ही एक्सेल फ़ाइल के भीतर भी।

  2. Microsoft Office (और OS) के हिस्से में दो प्रदाता हैं: पुराने "Microsoft.Jet.OLEDB", और नवीनतम "Microsoft.ACE.OLEDB"। कनेक्शन सेट करते समय उनके लिए देखें (जैसे डेटा कनेक्शन विज़ार्ड के साथ)।

  3. एक बार एक्सेल वर्कबुक से कनेक्ट होने के बाद, वर्कशीट या रेंज टेबल या व्यू के बराबर होती है। एक वर्कशीट का टेबल नाम वर्कशीट का नाम है जिसमें एक डॉलर चिह्न ("$") जुड़ा हुआ है, और चौकोर कोष्ठक ("[" और "]") से घिरा है; एक सीमा तक, यह केवल सीमा का नाम है। अपने रिकॉर्ड स्रोत के रूप में कक्षों की अनाम श्रेणी निर्दिष्ट करने के लिए, वर्ग कोष्ठक में शीट नाम के अंत में मानक एक्सेल पंक्ति / स्तंभ संकेतन संलग्न करें।

  4. मूल एसक्यूएल (कम या ज्यादा) माइक्रोसॉफ्ट एक्सेस का एसक्यूएल होगा। (अतीत में, इसे जेट एसक्यूएल कहा जाता था; हालांकि एक्सेस एसक्यूएल विकसित हो गया है, और मेरा मानना ​​है कि जेईटी को अपग्रेड किया गया है।)

  5. उदाहरण, एक वर्कशीट पढ़ना: SELECT * FROM [Sheet1$]

  6. उदाहरण, एक सीमा पढ़ना: SELECT * FROM MyRange

  7. उदाहरण, कक्षों की अनाम श्रेणी पढ़ना: SELECT * FROM [Sheet1$A1:B10]

  8. विशेष रूप से काम करने में आपकी सहायता के लिए कई कई किताबें और वेब साइटें उपलब्ध हैं।

=== आगे नोट ===

डिफ़ॉल्ट रूप से, यह माना जाता है कि आपके एक्सेल डेटा स्रोत की पहली पंक्ति में कॉलम हेडिंग शामिल हैं जिनका उपयोग फ़ील्ड नामों के रूप में किया जा सकता है। यदि यह मामला नहीं है, तो आपको इस सेटिंग को बंद करना होगा, या डेटा की आपकी पहली पंक्ति "गायब हो जाती है" फ़ील्ड नामों के रूप में उपयोग की जानी चाहिए। यह HDR= settingकनेक्शन स्ट्रिंग के विस्तारित गुणों के लिए वैकल्पिक जोड़कर किया जाता है । डिफ़ॉल्ट, जिसे निर्दिष्ट करने की आवश्यकता नहीं है, है HDR=Yes। यदि आपके पास कॉलम शीर्षक नहीं हैं, तो आपको निर्दिष्ट करने की आवश्यकता है HDR=No; प्रदाता आपके फ़ील्ड का नाम F1, F2, आदि रखता है।

वर्कशीट को निर्दिष्ट करने के बारे में सावधानी: प्रदाता मानता है कि आपके टेबल की डेटा निर्दिष्ट वर्कशीट पर ऊपरी-सबसे, बाएं-सबसे, गैर-रिक्त सेल से शुरू होती है। दूसरे शब्दों में, आपके डेटा की तालिका पंक्ति 3, कॉलम सी में बिना किसी समस्या के शुरू हो सकती है। हालाँकि, आप उदाहरण के लिए, सेल A1 में डेटा के ऊपर और वर्कशीट शीर्षक नहीं लिख सकते।

श्रेणियों को निर्दिष्ट करने के बारे में एक चेतावनी: जब आप अपने रिकॉर्ड स्रोत के रूप में एक वर्कशीट निर्दिष्ट करते हैं, तो प्रदाता वर्कशीट में मौजूदा रिकॉर्ड से नीचे नए रिकॉर्ड जोड़ता है जैसा कि अंतरिक्ष अनुमति देता है। जब आप एक सीमा (नाम या अनाम) निर्दिष्ट करते हैं, तो जेट उस स्थान में मौजूदा रिकॉर्ड के नीचे नए रिकॉर्ड भी जोड़ता है जैसा कि अंतरिक्ष अनुमति देता है। हालाँकि, यदि आप मूल सीमा पर आवश्यक हैं, तो परिणामी रिकॉर्डसेट में श्रेणी के बाहर नए जोड़े गए रिकॉर्ड शामिल नहीं हैं।

सी के लिए डेटा प्रकार (लायक प्रयास) REATE TABLE: Short, Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal

"पुरानी तकनीक" एक्सेल से कनेक्ट करना (एक्सएल एक्सनेशन वाली फाइलें) Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;:। Microsoft Excel 5.0 और 7.0 (95) कार्यपुस्तिकाओं के लिए Excel 5.0 स्रोत डेटाबेस प्रकार का उपयोग करें और Microsoft Excel 8.0 (97), 9.0 (2000) और 10.0 (2002) कार्यपुस्तिकाओं के लिए Excel 8.0 स्रोत डेटाबेस प्रकार का उपयोग करें।

"नवीनतम" एक्सेल से कनेक्ट करना (xlsx फाइल एक्सटेंशन वाली फाइलें): Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"

डेटा को टेक्स्ट के रूप में मानना: IMEX सेटिंग सभी डेटा को टेक्स्ट के रूप में मानता है। Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";

( Http://www.connectionstrings.com/excel पर अधिक जानकारी )

अधिक जानकारी http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspx और http://support.microsoft.com/kb/316934 पर

Http://support.microsoft.com/kb/257819 पर VBA के माध्यम से ADODB के माध्यम से एक्सेल से कनेक्ट करना

Microsoft JET के 4 विवरण http://support.microsoft.com/kb/275561 पर देखें


4
डेटा कनेक्शन के लिए एक फ़ाइल नाम की आवश्यकता होती है, जो शो-स्टॉपर होता है जब कार्य वर्तमान फ़ाइल को क्वेरी करना होता है। इसके अलावा, एक क्वेरी का उपयोग उसी तरह से नहीं किया जा सकता है जैसा कि एक सूत्र कर सकता है, आप केवल एक सीमा को आबाद करने के लिए एक निश्चित क्वेरी का उपयोग कर सकते हैं; और यह अपने आप अपडेट नहीं होता है। इसलिए, यह मौजूदा फ़ाइल को क्वेरी करने के लिए अनुपयोगी है, और सूत्रों के लिए ड्रॉप-इन प्रतिस्थापन के रूप में अनुपयोगी है।
ivan_pozdeev

2
@ivan_pozdeev मैंने अभी अपने लिए Excel 2010 का उपयोग करके पुष्टि की है कि वर्तमान फ़ाइल को क्वेरी कर सकता है; मुझे नहीं पता कि एक्सेल / ऑफिस के बाद के संस्करण अब संभव नहीं बनाते हैं। मैं इस बात से सहमत हूं कि डेटा कनेक्शन विज़ार्ड के माध्यम से सेल्फ-रेफ़रेंशियल टेबल बनाना क्लिंकी है - मोटे तौर पर क्योंकि वर्कबुक के लिए पूरे रास्ते का उपयोग करके कनेक्शन बनाया गया है, इसलिए वर्कबुक का नाम बदलना / कॉपी करना / इसे स्थानांतरित करना या परिणाम भ्रमित करना होगा। हालाँकि, कार्यपुस्तिकाओं के लिए जहां VBA का उपयोग कोई समस्या नहीं है, स्व-संदर्भात्मक क्वेरी बहुत प्रबंधनीय है।
rskar 17

@ivan_pozdeev मैं इस बात से भी सहमत हूं कि एक्सेल ऑटो-रिफ्रेश सेल्फ रेफ़रेंशियल टेबल के अनुकूल नहीं है; अनुमान हमेशा बाह्य डेटा है। कनेक्शन गुणों के उपयोग टैब के माध्यम से ऑटो-रिफ्रेश संभव हैं (जैसा कि हर इतने मिनट बाद पुनः लोड होता है), और वीबीए के साथ पुनर्गणना की घटनाओं में टैप कर सकता है। फिर भी, मुझे विश्वास नहीं होता है कि मैं कभी भी इसे सूत्रों के लिए एक ड्रॉप-इन प्रतिस्थापन के रूप में देख सकता हूं।
rskar

2
"ऐसे कई ठीक तरीके इस करवाने के लिए कर रहे हैं" - यह है कि अगर अधिक बड़ी खामी glossing कि नहीं कर रहा है सब इन "ठीक" तरीके वास्तव में अनुरोध किया उपयोग के मामले (जिसके लिए राशि कर रहे हैं कि उनके बड़े पैमाने पर इस्तेमाल होने से बचाता है), मुझे पता नहीं क्या है।
ivan_pozdeev

8

tl; डॉ; Excel यह सब मूल रूप से करता है - फ़िल्टर और या तालिकाओं का उपयोग करें

( http://office.microsoft.com/en-gb/excel-help/filter-data-in-an-excel-table-HA102840028.aspx )

आप एक oledb कनेक्शन के माध्यम से प्रोग्राम को एक्सेल खोल सकते हैं और कार्यपत्रक के भीतर तालिकाओं पर SQL निष्पादित कर सकते हैं।

लेकिन आप वह सब कुछ कर सकते हैं जो आप बिना किसी फॉर्मूले के फ़िल्टर के साथ करने के लिए कह रहे हैं।

  1. जो भी डेटा आप देख रहे हैं, उसके भीतर कहीं भी क्लिक करें
  2. रिबन बार पर डेटा पर जाएं
  3. मध्य के बारे में "फ़िल्टर" चुनें और फ़नल जैसा दिखता है
    • अब आपके पास अपनी तालिका की पहली पंक्ति में प्रत्येक सेल के तंग हाथ की तरफ तीर होंगे
  4. फ़ोन नंबर और डी-सलेक्ट ब्लॉक्स (अंतिम विकल्प) पर तीर पर क्लिक करें
  5. अंतिम नाम पर तीर पर क्लिक करें और az ऑर्डरिंग चुनें (शीर्ष विकल्प)

चारों ओर एक नाटक है .. कुछ बातों पर ध्यान दें:

  1. आप फ़िल्टर्ड पंक्तियों का चयन कर सकते हैं और उन्हें कहीं और चिपका सकते हैं
  2. बाईं ओर स्थित स्थिति बार में आप देखेंगे कि कुल पंक्तियों की कुल संख्या में से कितनी पंक्तियाँ आपको फ़िल्टर मापदंड से मिलती हैं। (313 में से 308 रिकॉर्ड पाए गए)
  3. आप 2010 में एक्सेल में रंग द्वारा फ़िल्टर कर सकते हैं
  4. कभी-कभी मैं गणना किए गए कॉलम बनाता हूं जो डेटा के स्टेटस या क्लीन किए गए संस्करण देता है और फिर आप थ्रेस द्वारा भी फ़िल्टर या सॉर्ट कर सकते हैं। (अन्य उत्तरों में सूत्र की तरह)

इसे फ़िल्टर के साथ करें जब तक कि आप इसे बहुत कुछ करने नहीं जा रहे हैं या आप डेटा आयात करना चाहते हैं कहीं या कुछ .. लेकिन पूर्णता के लिए:

एक सी # विकल्प:

 OleDbConnection ExcelFile = new OleDbConnection( String.Format( "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=YES\"", filename));
 ExcelFile.Open();

शुरू करने के लिए एक आसान जगह स्कीमा पर एक नज़र रखना है क्योंकि आपके विचार से अधिक हो सकता है:

List<String> excelSheets = new List<string>();

// Add the sheet name to the string array.
foreach (DataRow row in dt.Rows) {
    string temp = row["TABLE_NAME"].ToString();
    if (temp[temp.Length - 1] == '$') {
         excelSheets.Add(row["TABLE_NAME"].ToString());
    }
}

फिर जब आप एक शीट को क्वेरी करना चाहते हैं:

 OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + sheet + "]", ExcelFile);
 dt = new DataTable();
  da.Fill(dt);

ध्यान दें - एक्सेल में टेबल्स का उपयोग करें !:

एक्सेल में "टेबल" कार्यक्षमता है जो डेटा को एक टेबल की तरह अधिक व्यवहार करती है .. इससे आपको कुछ महान लाभ मिलते हैं लेकिन आपको हर प्रकार की क्वेरी करने की अनुमति नहीं है।

http://office.microsoft.com/en-gb/excel-help/overview-of-excel-tables-HA010048546.aspx

एक्सेल में सारणीबद्ध डेटा के लिए यह मेरी डिफ़ॉल्ट है .. पहली बात मैं डेटा में क्लिक करता हूं फिर रिबन पर होम अनुभाग से "तालिका के रूप में प्रारूप" का चयन करें। यह आपको फ़िल्टरिंग देता है, और डिफ़ॉल्ट रूप से छांटता है और आपको तालिका और फ़ील्ड को नाम से एक्सेस करने की अनुमति देता है (उदाहरण तालिका [फ़ील्डनाम]) यह कॉलमों पर कुल कार्यों जैसे अधिकतम और औसत की अनुमति देता है


यदि आप स्तंभों को कम करना चाहते हैं तो मैं व्यक्तिगत रूप से फ़िल्टर की गई पंक्तियों को एक नई शीट पर कॉपी कर दूंगा और उन कॉलमों को हटा दूंगा जिनकी मुझे आवश्यकता नहीं थी। आप उन्हें छिपा सकते हैं, लेकिन इसके लायक शायद ही हो।

1
using System.Data.OleDb; using System.Data;

1
मैं सप्ताह में कुछ बार स्प्रेडशीट एक्सेस करने के लिए हर दिन और c # फ़िल्टर करता हूं। c # का उपयोग करते समय यह डेटा को वास्तव में इसके साथ खेलने के लिए db में आयात करने की प्रवृत्ति रखता है..जबकि वास्तविक रूप से इसके sql सर्वर में है तो फ़िल्टर या sql को वास्तविक रूप से क्वेरी करना वास्तव में मध्यवर्ती स्तर पर excel स्तर पर करने के लिए नहीं है।

7

आप इसे इस प्रकार से कर सकते हैं:

  1. तालिका का चयन करें और अंतिम नाम पर इसे सॉर्ट करने के लिए एक्सेल का उपयोग करें
  2. 1-स्तंभ उन्नत फ़िल्टर मानदंड द्वारा 2-पंक्ति बनाएँ, E1 और E2 में कहें, जहाँ E1 खाली है और E2 में वह सूत्र है =C6="" जहाँ C6 फ़ोन नंबर कॉलम का पहला डेटा सेल है।
  3. तालिका का चयन करें और उन्नत फिल्टर का उपयोग करें, एक सीमा तक कॉपी करें, E1: E2 में मानदंड रेंज का उपयोग करके और निर्दिष्ट करें कि आप कहां पर कॉपी करना चाहते हैं

यदि आप यह प्रोग्रामेटिक रूप से करना चाहते हैं तो मेरा सुझाव है कि आप उपरोक्त चरणों को रिकॉर्ड करने और कोड को देखने के लिए मैक्रो रिकॉर्डर का उपयोग करें।


8
प्रश्न SQL निर्दिष्ट करता है।
एस मैडेन

4

आप एक्सेल में SQL का उपयोग कर सकते हैं। यह केवल अच्छी तरह से छिपा हुआ है। इस ट्यूटोरियल देखें:

http://smallbusiness.ync.com/use-sql-statements-ms-excel-41193.html


3
ऐसा लगता है कि यह एक्सेल में आयात के लिए डेटा का चयन करने के लिए एसक्यूएल का उपयोग कर रहा है, हालांकि, मौजूदा स्प्रेडशीट के खिलाफ क्वेरी नहीं चलाते हैं?
रूप

आपको एक्सेल (नाम प्रबंधक) में प्रत्येक तालिकाओं के लिए एक नाम बनाने की आवश्यकता है या बस तालिका का चयन करें और नाम लिखें जहां सेल पता दिखाया गया है। फिर आप इसे वर्कशीट के खिलाफ क्वेरी करने के लिए उपयोग कर सकते हैं। क्वेरी में आपको शीट का पूरा पता मिल गया है, इसलिए यदि आप स्प्रेडशीट को अपनी डिस्क पर कहीं और स्थानांतरित करते हैं, तो क्वेरी काम नहीं करेगी
पेट्रिक

3

हो सकता है कि मैं QueryStorm को एक कोशिश देने का सुझाव दूं - यह एक्सेल के लिए एक प्लगइन है जो एक्सेल में एसक्यूएल का उपयोग करने के लिए काफी सुविधाजनक बनाता है।

इसके अलावा, यह फ्रीमियम है। यदि आप स्वत: पूर्ण, त्रुटि स्किगलीज़ आदि के बारे में परवाह नहीं करते हैं, तो आप इसे मुफ्त में उपयोग कर सकते हैं। बस डाउनलोड और इंस्टॉल करें, और आपके पास एक्सेल में SQL सपोर्ट है।

डिस्क्लेमर: मैं लेखक हूं।


1
दुर्भाग्य से, हालांकि यह एक महान उपकरण है, यह अब केवल 30 दिनों के परीक्षण को छोड़कर भुगतान करने के लिए प्रतीत होता है।
मार्क

2

यदि आपको चार्ल्स के विवरणों का पालन करने के लिए एक बार ऐसा करने की आवश्यकता है, लेकिन यह एक्सेल फ़ार्मुलों और सहायक स्तंभों के साथ ऐसा करना संभव है, जब आप फ़िल्टर को गतिशील बनाना चाहते हैं।

मान लें कि आप डेटा शीट पर डेटा डेटशीट पर है और निम्न कॉलम की पंक्ति 2 में शुरू होता है:

  • A: lastname
  • बी: Firstname
  • सी: फोननंबर

इस शीट पर आपको दो सहायक कॉलम चाहिए।

  • D2: =if(A2 = "", 1, 0)यह फ़िल्टर कॉलम है, जहाँ आपकी स्थिति के अनुरूप है
  • E2: =if(D2 <> 1, "", sumifs(D$2:D$1048576, A$2:A$1048576, "<"&A2) + sumifs(D$2:D2, A$2:A2, A2))यह क्रम से मेल खाती है

जहां तक ​​आपका डेटा जाता है, इन फॉर्मूलों को कॉपी कर लें।

शीट पर जो आपका परिणाम प्रदर्शित करना चाहिए, निम्नलिखित कॉलम बनाएं।

  • A: संख्याओं का एक क्रम जो पंक्ति 2 में 1 से शुरू होता है, यह आपके द्वारा प्राप्त की जा सकने वाली पंक्तियों की कुल संख्या को सीमित करता है (अगली कड़ी में सीमा की तरह)
  • बी 2: =match(A2, DataSheet!$E$2:$E$1048576, 0)यह संबंधित डेटा की पंक्ति है
  • C2: =iferror(index(DataSheet!A$2:A$1048576, $B2), "")यह वास्तविक डेटा या खाली है यदि कोई डेटा मौजूद नहीं है

बी 2 और सी 2 में फॉर्मूले को कॉपी करें और कॉलम-बी को डी और ई को कॉपी करें।


0

यदि आप सीधे एक्सेल फ़ाइलों को क्वेरी करते हैं, तो एस्प्रोक आज़माएँ। का संदर्भ लें https://esprocforbp.medium.com/directly-query-excel-text-files-using-sql-5315788231e4 । न केवल साधारण एसक्यूएल का समर्थन करता है, बल्कि ग्रुप हैविंग, सबक्वेरी, नेस्टेड सबक्वेरी, जॉइन, यहां तक ​​कि ... को भी 'टेबल एक्सप्रेशन' के रूप में उदाहरण के लिए सपोर्ट करता है:

$with A as
(select NAME as DEPT from E:/department.xlsx where NAME='HR' or NAME='Sales') 
select A.DEPT DEPT,count(*) NUM,avg(B.SAL_ARY) AVG_SALARY from A left join E:/employee.xlsx B on A.DEPT=B.DEPT
where B.GENDER='F' group by A.DEPT

यदि आप Excel में किसी क्षेत्र को क्वेरी करना चाहते हैं, तो डेटा को क्लिपबोर्ड पर कॉपी करें। तब esProc क्लिपबोर्ड फ़ंक्शन का उपयोग करके डेटा तालिका प्राप्त करता है और फिर एकल-तालिका क्वेरी करता है। यदि आप कई क्षेत्रों को क्वेरी करना चाहते हैं, तो डेटा के प्रत्येक क्षेत्र को esProc पर कॉपी करें, और esProc में कई टेबल प्राप्त करें और उदाहरण की तरह मल्टी-टेबल क्वेरी निष्पादित करें।

अस्वीकरण: यह हमारे उपकरण esProc के बारे में है। यह फ्रीमियम है।


-1

आप अपनी पसंद की भाषा / मंच में एक्सेल के लिए मूल डीबी ड्राइवर के साथ प्रयोग कर सकते हैं। जावा दुनिया में, आप http://code.google.com/p/sqlsheet/ के साथ कोशिश कर सकते हैं जो सीधे एक्सेल शीट के साथ काम करने के लिए JDBC ड्राइवर प्रदान करता है। इसी तरह, आप अन्य प्लेटफार्मों के लिए डीबी प्रौद्योगिकी के लिए ड्राइवर प्राप्त कर सकते हैं।

हालाँकि, मैं गारंटी दे सकता हूँ कि आप जल्द ही एक दीवार से टकराएँगे जो इन रैपर पुस्तकालयों को प्रदान करती है। बेहतर तरीका यह होगा कि अपाचे एचएसएसएफ / पीओआई या इसी तरह के पुस्तकालय का उपयोग किया जाए लेकिन इसके लिए अधिक कोडिंग के प्रयास की आवश्यकता होगी।


-1

मैं मुझे गलत समझ सकता हूं, लेकिन क्या यह वास्तव में एक धुरी तालिका नहीं है? क्या आपके पास एक तालिका या केवल फ़िल्टर्ड सूची में डेटा है? यदि इसकी तालिका नहीं है तो इसे एक (ctrl + l) बना दें यदि यह है, तो बस तालिका में किसी भी सेल को सक्रिय करें और दूसरी शीट पर एक धुरी तालिका डालें। फिर पंक्तियों अनुभाग में कॉलम lastname, firstname, phonenumber जोड़ें। फिर फ़िल्टर अनुभाग में फ़ोन नंबर जोड़ें और शून्य मानों को फ़िल्टर करें। अब सामान्य की तरह क्रमबद्ध करें।


-1

मेरा सुझाव है कि आप MySQL सीएसवी भंडारण इंजन पर एक नज़र डालें जो अनिवार्य रूप से डेटाबेस में किसी भी सीएसवी फ़ाइल (आसानी से एक्सेल से बनाई गई) को लोड करने की अनुमति देता है, एक बार जब आपके पास होता है, तो आप अपने इच्छित किसी भी एसक्यूएल कमांड का उपयोग कर सकते हैं।

यह देखने लायक है।


-1

यदि आपके पास GDAL / OGR एक्सपैट लाइब्रेरी के खिलाफ संकलित है, तो आप .xlsx फ़ाइलों को पढ़ने के लिए XLSX ड्राइवर का उपयोग कर सकते हैं , और कमांड प्रॉम्प्ट से SQL एक्सप्रेशन चला सकते हैं। उदाहरण के लिए, स्प्रैडशीट के समान निर्देशिका में एक ओस्गेओ 4 डब्ल्यू शेल से, ओग्रीनो उपयोगिता का उपयोग करें :

ogrinfo -dialect sqlite -sql "SELECT name, count(*) FROM sheet1 GROUP BY name" Book1.xlsx

एक SQLite क्वेरी को चालू करेगा sheet1, और क्वेरी परिणाम को असामान्य रूप में आउटपुट करेगा:

INFO: Open of `Book1.xlsx'
      using driver `XLSX' successful.

Layer name: SELECT
Geometry: None
Feature Count: 36
Layer SRS WKT:
(unknown)
name: String (0.0)
count(*): Integer (0.0)
OGRFeature(SELECT):0
  name (String) = Red
  count(*) (Integer) = 849

OGRFeature(SELECT):1
  name (String) = Green
  count(*) (Integer) = 265
...

या साधारण CSV फ़ाइल बनाने के लिए ogr2ogr का उपयोग करके समान क्वेरी चलाएँ :

$ ogr2ogr -f CSV out.csv -dialect sqlite \
          -sql "SELECT name, count(*) FROM sheet1 GROUP BY name" Book1.xlsx

$ cat out.csv
name,count(*)
Red,849
Green,265
...

पुराने .xls फ़ाइलों के साथ भी ऐसा ही करने के लिए, आपको XLS ड्राइवर की आवश्यकता होगी , जो कि FreeXL लाइब्रेरी के खिलाफ बनाया गया है, जो वास्तव में आम नहीं है (जैसे OSGeo4w से नहीं)।


-2

Microsoft Access और LibreOffice बेस एक स्रोत के रूप में एक स्प्रेडशीट खोल सकता है और उस पर sql क्वेरी चला सकता है। यह सभी प्रकार के प्रश्नों को चलाने का सबसे आसान तरीका होगा, और मैक्रो या राइटिंग कोड चलाने की गड़बड़ी से बचना होगा।

एक्सेल में ऑटोफिल्टर और डेटा सॉर्टिंग भी है जो आपके उदाहरण की तरह बहुत सारे सरल प्रश्नों को पूरा करेगा। यदि आपको उन विशेषताओं के साथ मदद चाहिए, तो Google मेरे लिए ट्यूटोरियल का एक बेहतर स्रोत होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.