git मैं गिट diff का उपयोग कर दो स्प्रेडशीट्स के एक पठनीय diff कैसे बना सकता हूँ?




version-control merge (16)

हमारे स्रोत कोड भंडार में हमारे पास बहुत से स्प्रेडशीट्स (xls) हैं। इन्हें आमतौर पर gnumeric या openoffice.org के साथ संपादित किया जाता है, और ज्यादातर dbUnit साथ यूनिट परीक्षण के लिए डेटाबेस को पॉप्युलेट करने के लिए उपयोग किया जाता है। Xls फ़ाइलों पर diffs करने का कोई आसान तरीका नहीं है जो मुझे पता है, और यह बेहद थकाऊ और त्रुटि प्रवण विलय कर देता है।

मैंने स्प्रेडशीट्स को एक्सएमएल में बदलने और नियमित रूप से भिन्न करने की कोशिश की है, लेकिन यह वास्तव में ऐसा लगता है कि यह अंतिम उपाय होना चाहिए।

मैं पाठ फ़ाइलों के साथ git साथ diffing (और विलय) करना चाहता हूँ। मैं यह कैसे करूँगा, उदाहरण के लिए जब git diff जारी करते हैं?


एसवीएन के लिए xdocdiff प्लगइन


मुझे here एक ओपनऑफिस मैक्रो मिला जो ओपनऑफिस की तुलना दस्तावेजों को दो फाइलों पर काम करेगा। दुर्भाग्यवश, ओपनऑफिस की स्प्रेडशीट तुलना थोड़ा सा झटकेदार लगती है; मैंने बस 'अस्वीकार करें' बटन को मेरे दस्तावेज़ में एक अधूरा कॉलम डाला था।


हमने अपने सह में एक ही मुद्दे का सामना किया। हमारे परीक्षण आउटपुट कार्यपुस्तिका एक्सेल। बाइनरी diff एक विकल्प नहीं था। तो हमने अपना खुद का सरल कमांड लाइन टूल लॉन्च किया। ExcelCompare प्रोजेक्ट देखें । असल में यह हमें अपने परीक्षणों को काफी अच्छी तरह से स्वचालित करने की अनुमति देता है। पैच / फ़ीचर अनुरोधों का स्वागत है!


यदि आप जावा का उपयोग कर रहे हैं, तो आप simple-excel प्रयास कर सकते simple-excel

यह हैमक्रिस्ट मैचर्स का उपयोग करके स्प्रेडशीट को अलग करेगा और इस तरह कुछ आउटपुट करेगा।

java.lang.AssertionError:
Expected: entire workbook to be equal
     but: cell at "C14" contained <"bananas"> expected <nothing>,
          cell at "C15" contained <"1,850,000 EUR"> expected <"1,850,000.00 EUR">,
          cell at "D16" contained <nothing> expected <"Tue Sep 04 06:30:00">
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)

मुझे अर्हता प्राप्त करनी चाहिए कि हमने उस उपकरण को लिखा है (जैसे कि चुने गए जवाब ने खुद को लुढ़काया)।


मुझे xdocdiff WinMerge प्लगइन मिला है। यह WinMerge ( ओपनसोर्स और फ्रीवेयर दोनों के लिए एक प्लगइन है, आपको वीबीए लिखने की आवश्यकता नहीं है और न ही सीएसवी या एक्सएमएल को एक्सेल बचाएं)। यह सिर्फ केल्ड के लिए काम करता है।

यह प्लगइन भी समर्थन करता है:

  • .rtf रिच टेक्स्ट
  • .docx / .docm माइक्रोसॉफ्ट वर्ड 2007 (ओओएक्सएमएल)
  • .xlsx / .xlsm माइक्रोसॉफ्ट एक्सेल 2007 (ओओएक्सएमएल)
  • .pptx / .pptm माइक्रोसॉफ्ट पावरपॉइंट 2007 (ओओएक्सएमएल)
  • .doc माइक्रोसॉफ्ट वर्ड ver5.0 / 95/97/2000 / XP / 2003
  • .xls माइक्रोसॉफ्ट एक्सेल ver5.0 / 95/97/2000 / XP / 2003
  • .ppt माइक्रोसॉफ्ट पावरपॉइंट 97/2000 / एक्सपी / 2003
  • .sxw / .sxc / .sxi / .sxd OpenOffice.org
  • .odt / .ods / .odp / .odg ओपन दस्तावेज़
  • .wj2 / wj3 / wk3 / wk4 / 123 कमल 123
  • .wri विंडोज 3.1 लिखें
  • पीडीएफ एडोब पीडीएफ
  • एमएमटी वेब आर्काइव
  • OutlookExpress से .eml निर्यात की गई फ़ाइलें

सादर, एंड्रेस


मुझे किसी भी उपकरण के बारे में पता नहीं है, लेकिन दो रोल-आपके स्वयं के समाधान हैं जो ध्यान में आते हैं, दोनों को एक्सेल की आवश्यकता होती है:

  1. आप कुछ वीबीए कोड लिख सकते हैं जो दो कार्यपुस्तिकाओं के प्रत्येक वर्कशीट, पंक्ति, कॉलम और सेल के माध्यम से कदम उठाते हैं।

  2. यदि आप Excel 2007 का उपयोग करते हैं, तो आप वर्कबुक को ओपन-एक्सएमएल (* .xlsx) प्रारूप के रूप में सहेज सकते हैं, एक्सएमएल निकालें और इसे अलग करें। ओपन-एक्सएमएल फ़ाइल अनिवार्य रूप से सिर्फ .xml फ़ाइलों की एक .zip फ़ाइल है और प्रकट होती है।

यदि आपकी स्प्रैडशीट्स प्रारंभिक रूप से "बंद" नहीं हैं, तो आप किसी भी मामले में बहुत से "शोर" के साथ समाप्त हो जाएंगे।


Altova DiffDog का प्रयोग करें

एक आसान पढ़ने के लिए टैब्यूलर प्रारूप में अंतर की समीक्षा करने के लिए diffdog के एक्सएमएल diff मोड और ग्रिड व्यू का प्रयोग करें। किसी भी जटिलता के स्प्रेडशीट्स के लिए पाठ भिन्नता बहुत कठिन है। इस उपकरण के साथ, कम से कम दो विधियां विभिन्न परिस्थितियों में व्यवहार्य हैं।

  1. .xml के रूप में सहेजें

    एक साधारण, एक शीट स्प्रैडशीट के अंतरों का पता लगाने के लिए, एक्सेल स्प्रेडशीट को एक्सएमएल स्प्रेडशीट 2003 के रूप में तुलना करने के लिए .xml एक्सटेंशन के साथ सहेजें।

  2. .xlsx के रूप में सहेजें

    मॉड्यूलरलाइज्ड दस्तावेज़ मॉडल में अधिकांश स्प्रैडशीट्स के अंतरों का पता लगाने के लिए, एक्सेल स्प्रैडशीट को एक्सेल वर्कबुक के रूप में .xlsx रूप में तुलना करने के लिए सहेजें। Diffdog के साथ diff फ़ाइलों को खोलने के लिए खोलें। यह आपको सूचित करता है कि फ़ाइल एक ज़िप संग्रह है, और पूछता है कि क्या आप इसे निर्देशिका तुलना के लिए खोलना चाहते हैं। निर्देशिका तुलना से सहमत होने पर, दस्तावेज़ के लॉजिकल हिस्सों को डबल-क्लिक करने के लिए यह अपेक्षाकृत सरल मामला बन जाता है (एक्सएमएल डिफ मोड के साथ)। .xslx दस्तावेज़ के अधिकांश भाग XML- स्वरूपित डेटा हैं। ग्रिड व्यू बेहद उपयोगी है। बदलने के लिए जाने वाले क्षेत्रों पर विश्लेषण पर ध्यान केंद्रित करने के लिए अलग-अलग चादरों को अलग करना मुश्किल है।

प्रत्येक बचत के साथ कुछ विशेषता नामों को ट्विक करने के लिए एक्सेल की प्रवृत्ति कष्टप्रद है, लेकिन diffdog की XML diff'ing क्षमताओं में कुछ प्रकार के अंतर फ़िल्टर करने की क्षमता शामिल है। उदाहरण के लिए, एक्सएमएल फॉर्म में एक्सेल स्प्रैडशीट्स में row और c तत्व होते हैं जिनमें प्रत्येक विशेषता के साथ नाम बदलने वाले गुण (शैली) होते हैं। c:s जैसे फ़िल्टर को सेट करना केवल सामग्री परिवर्तनों को देखना अधिक आसान बनाता है।

diffdog बहुत diff'ing क्षमता है। मैंने एक्सएमएल डिफ मोड को केवल इसलिए सूचीबद्ध किया है क्योंकि मैंने एक्सेल दस्तावेज़ों को अलग करने की बात आने पर मुझे एक और टूल का उपयोग नहीं किया है।


एमएस ऑफिस के नए संस्करण स्प्रेडशीट तुलना के साथ आते हैं, जो एक जीयूआई में काफी अच्छा अंतर करता है। यह ज्यादातर प्रकार के परिवर्तनों का पता लगाता है।


मुझे पता है कि कई प्रतिक्रियाओं ने फ़ाइल को सीएसवी या किसी अन्य पाठ प्रारूप में निर्यात करने का सुझाव दिया है, और फिर उनकी तुलना कर रहा है। मैंने इसे विशेष रूप से उल्लेख नहीं किया है, लेकिन तुलना 3 से परे कई अतिरिक्त फ़ाइल स्वरूप हैं जो इसका समर्थन करते हैं। अतिरिक्त फ़ाइल प्रारूप देखें। माइक्रोसॉफ्ट एक्सेल फ़ाइल प्रारूपों में से किसी एक का उपयोग करके आप दो एक्सेल फ़ाइलों की तुलना किसी अन्य प्रारूप विकल्प में निर्यात के बिना आसानी से कर सकते हैं।


कोई बाहरी उपकरण के साथ त्वरित और आसान, जब तक आप दो शीट्स की तुलना कर रहे हैं तब तक अच्छी तरह से काम करता है:

  • एक तीसरी स्प्रेडशीट बनाएं
  • टाइप =if(Sheet1!A1 <> Sheet2!A1, "X", "") शीर्ष बाएं सेल में (या समतुल्य: सूत्रों में स्वचालित रूप से संदर्भों को स्वचालित रूप से सम्मिलित करने के लिए वास्तविक कक्षों पर क्लिक करें)
  • Ctrl + C (प्रतिलिपि), Ctrl + A (सभी का चयन करें), शीट भरने के लिए Ctrl + V (पेस्ट)।

यदि चादरें समान हैं, तो अंतर में हाइलाइट करते हुए एक्स में कुछ कोशिकाओं को छोड़कर यह स्प्रेडशीट खाली हो जाएगी। क्या अलग है यह देखने के लिए 40% तक अनजूम करें।


यदि diffs प्रदर्शन करना महत्वपूर्ण है तो मैं SYLK फ़ाइल प्रारूप का उपयोग करूंगा। यह एक टेक्स्ट-आधारित प्रारूप है, जो तुलना को बाइनरी प्रारूप से तुलनात्मक और अधिक कॉम्पैक्ट बनाना चाहिए। यह Excel, Gnumeric, और OpenOffice.org के साथ भी संगत है, इसलिए सभी तीन टूल एक साथ अच्छी तरह से काम करने में सक्षम होना चाहिए। SYLK विकिपीडिया लेख


क्या आप subversion में अपने काम और अद्यतन करने के लिए TortoiseSVN का उपयोग करते हैं? इसमें एक diff टूल है, हालांकि Excel फ़ाइलों की तुलना करना अभी भी वास्तव में उपयोगकर्ता के अनुकूल नहीं है। मेरे पर्यावरण में (विन XP, Office 2007), यह साइड बाय साइड तुलना के लिए दो एक्सेल फ़ाइलों को खोलता है।

राइट क्लिक करें दस्तावेज़> कछुआ एसवीएन> लॉग दिखाएँ> संशोधन का चयन करें> "कार्यशील प्रतिलिपि के साथ तुलना करें" के लिए राइट क्लिक करें।


मैंने अतीत में एक्सेल कार्यपुस्तिकाओं की तुलना की है। मेरी तकनीक कई वर्कशीट्स के साथ कार्यपुस्तिकाओं के लिए बहुत अच्छी तरह से काम करती है, लेकिन यह केवल सेल सामग्री की तुलना करता है, न कि सेल स्वरूपण, मैक्रोज़ इत्यादि। इसके अलावा, इसमें कुछ कोडिंग शामिल है लेकिन यदि आपको कई बड़ी फ़ाइलों की बार-बार तुलना करना है तो यह इसके लायक है। यहां देखिए यह कैसे काम करता है:

ए) एक साधारण डंप प्रोग्राम लिखें जो सभी वर्कशीट्स के माध्यम से कदम उठाता है और सभी डेटा को टैब से अलग फ़ाइलों में सहेजता है। वर्कशीट प्रति एक फ़ाइल बनाएं (वर्कशीट नाम का उपयोग फ़ाइल नाम के रूप में करें, उदाहरण के लिए "MyWorksheet.tsv"), और प्रत्येक बार जब आप प्रोग्राम चलाते हैं तो इन फ़ाइलों के लिए एक नया फ़ोल्डर बनाएं। एक्सेल फ़ाइल नाम के बाद फ़ोल्डर को नाम दें और एक टाइमस्टैम्प जोड़ें, उदाहरण के लिए "20080 9 22-065412-MyExcelFile"। मैंने जावा में JExcelAPI नामक लाइब्रेरी का उपयोग करके JExcelAPI । यह वास्तव में काफी आसान है।

बी) एक्सेल फ़ाइल पर राइट-क्लिक करते समय चरण ए से अपना नया जावा प्रोग्राम चलाने के लिए एक विंडोज शैल एक्सटेंशन जोड़ें। यह इस कार्यक्रम को चलाने में बहुत आसान बनाता है। आपको Google को यह करने की आवश्यकता है, लेकिन यह * .reg फ़ाइल लिखना जितना आसान है।

सी) BeyondCompare प्राप्त करें। यह एक अच्छी तालिका में दिखाकर सीमित डेटा की तुलना करने के लिए एक बहुत ही अच्छी सुविधा है, स्क्रीनशॉट देखें

डी) अब आप आसानी से एक्सेल फ़ाइलों की तुलना करने के लिए तैयार हैं। एक्सेल फ़ाइल 1 पर राइट-क्लिक करें और अपना डंप प्रोग्राम चलाएं। यह एक वर्कशीट प्रति फ़ाइल के साथ एक फ़ोल्डर बना देगा। एक्सेल फ़ाइल 2 पर राइट-क्लिक करें और अपना डंप प्रोग्राम चलाएं। यह एक वर्कशीट प्रति फ़ाइल के साथ एक दूसरा फ़ोल्डर बना देगा। फ़ोल्डर की तुलना करने के लिए अब BeyondCompare (BC) का उपयोग करें। प्रत्येक फ़ाइल वर्कशीट का प्रतिनिधित्व करती है, इसलिए यदि वर्कशीट में कोई अंतर है तो बीसी इसे दिखाएगा और आप ड्रिल कर सकते हैं और फ़ाइल तुलना कर सकते हैं। बीसी एक अच्छी टेबल लेआउट में तुलना दिखाएगा, और आप उन पंक्तियों और कॉलम को छुपा सकते हैं जिनमें आप रुचि नहीं रखते हैं।


सीवी में कनवर्ट करें, फिर एक संस्करण नियंत्रण प्रणाली पर अपलोड करें, फिर एक उन्नत संस्करण नियंत्रण diff उपकरण के साथ diff। जब मैंने प्रतिभा का उपयोग किया तो इसका एक बड़ा अंतर था, लेकिन मैं इसका नाम भूल गया।


हममम। एक्सेल मेनू से विंडो चुनें -> तरफ से तुलना करें?


यदि आपके पास TortoiseSVN है तो आप Windows Explorer में उन्हें चुनने के लिए CTRL को दो फ़ाइलों पर क्लिक कर सकते हैं और फिर राइट-क्लिक करें, TortoiseSVN-> डिफ।

यदि आप बड़े डेटा सेट में एक छोटे से बदलाव की तलाश में हैं तो यह विशेष रूप से अच्छा काम करता है।





xls