2008-09-22 13 views
155

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

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

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

+4

मुझे लगता है कि टैग यूनिट-परीक्षण और डब्यूनिट गलत तरीके से यहां लागू हैं। सवाल फ़ाइल फ़ाइल के बारे में एक विशिष्ट फ़ाइल प्रारूप के लिए है और यूनिट परीक्षण के साथ कुछ लेना देना नहीं है। –

+1

कोई उत्तर नहीं (इसे एक्सेल और एक वाणिज्यिक उत्पाद की आवश्यकता है) लेकिन यहां GooBinghoo द्वारा लाए गए लोगों के लिए - http://www.formulasoft.com/excel-compare.html मेरे लिए अच्छा काम करता है। –

+1

मैं एक्सेल को अलग करने के लिए इस पायथन स्क्रिप्ट का उपयोग करता हूं जिसे हम गिट में चेक-इन करते हैं। मैंने इस गो कोड को पोर्ट किया था (जिसे पर्ल से पोर्ट किया गया था) पाइथन: https://github.com/tokuhirom/git-xlsx-textconv#see-also यह आपको 'गिट diff' और' gitk' – nmz787

उत्तर

96

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

+1

शानदार है! धन्यवाद! – neu242

+0

महान काम करता है, धन्यवाद! – jwnace

+0

क्या यह .xlsx के साथ काम करता है? –

0

Diff Doc जो भी आप खोज रहे हैं हो सकता है।

  • एमएस वर्ड (डॉक्टर, DOCX आदि), एक्सेल, पीडीएफ, रिच टेक्स्ट (RTF), पाठ, HTML, XML, PowerPoint या वर्ड पर्फेक्ट के दस्तावेजों की तुलना करें और स्वरूपण
  • के किसी भी हिस्से चुनें बनाए रखने कोई दस्तावेज़ (फ़ाइल) और एक ही या अलग दस्तावेज़ (फ़ाइल) के किसी भी हिस्से के खिलाफ इसकी तुलना करें।
+1

डिफ डॉक केवल विंडोज़ और बंद स्रोत है, यह वास्तव में मेरी आवश्यकताओं के अनुरूप नहीं है। – neu242

0

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

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

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

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

+0

एक्सेल 2002 के बाद से आप 'एक्सएमएल स्प्रेडशीट' प्रारूप में भी सहेज सकते हैं जो xlsx फ़ाइलों से निपटने से सरल है। –

5

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

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

1

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

106

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

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

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

+0

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

+6

क्या यह सेल तुलना द्वारा सेल नहीं करता है? मेरा मतलब है कि अगर बाईं तरफ एक अतिरिक्त पंक्ति है, तो यह सभी शेष पंक्तियों (और कोशिकाओं) को अलग करेगी। अगर ऐसा है, तो यह बहुत उपयोगी नहीं है। –

+1

@Thecrocodilehunter: आप हमेशा उस पंक्ति को शीर्ष पर हटा सकते हैं और फिर बाकी की तुलना कर सकते हैं। यदि मतभेद बहुत अधिक जटिल हैं, तो निश्चित रूप से आपको एक अलग उपकरण की आवश्यकता है। यह त्वरित एक-ऑफ तुलना के लिए उपयोगी है, जैसे एक्सेल कहता है कि आपने स्प्रेडशीट बदल दी है और आपको डर है कि आपने गलती से एक फ़ील्ड संपादित किया है। – iconoclast

12

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

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

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

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

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

6

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

+0

+1 अच्छी तरह से काम करता है लेकिन कार्यालय 2007 में अंतर को हाइलाइट नहीं करता है। मुझे लगता है कि पुराने संस्करणों में ऐसा लगता है। दृश्य तुलना के लिए अभी भी बहुत अच्छा है। –

+2

हाँ, कोई हाइलाइटिंग नहीं है, इसलिए केवल लाभ सिंक्रोनस स्क्रॉलिंग है। – Sogger

1

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

9

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

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

  • .rtf रिच टेक्स्ट
  • .docx/.docm माइक्रोसॉफ्ट वर्ड 2007 (OOXML)
  • .xlsx/.xlsm Microsoft Excel 2007 (OOXML)
  • .pptx/.pptm Microsoft PowerPoint 2007 (OOXML)
  • .doc माइक्रोसॉफ्ट वर्ड ver5.0/95/97/2000/XP/2003
  • .xls माइक्रोसॉफ्ट एक्सेल ver5.0/95/97/2000/XP/2003
  • .ppt Microsoft PowerPoint 97/2000/XP/2003
  • .sxw/.sxc/.sxi/.sxd OpenOffice.org
  • .odt/.ods/.odp/.odg ओपन दस्तावेज़
  • .wj2/wj3/WK3/WK4/123 लोटस 123
  • .wri Windows3.1 OutlookExpress
  • से
  • .pdf Adobe PDF
  • .mht वेब संग्रह
  • .eml निर्यात फ़ाइलें लिखें

सम्मान, एंड्रेस

+1

दुर्भाग्य से, यह अनपॅक किए गए फ़ाइलों में परिवर्तनों को सहेजने की अनुमति नहीं देता है, इसलिए यह विलय के लिए उपयोगी नहीं है। हालांकि यह मुफ्त है। – Sogger

+0

यह उपयोगी है और अधिक ठंडा होने के लिए ग्रिड व्यू मोड की आवश्यकता है – Doberon

0

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

1

xdocdiff प्लगइन SVN

+0

xdocdiff अच्छा लग रहा है, लेकिन ऐसा लगता है कि TortioseSVN – neu242

+0

अच्छी पुरानी 'diff' कमांड प्लस xdoc2txt के बारे में कैसा लगता है। – graveDust

+0

xdocdiff में WinMerge प्लगइन भी है, इन दोनों का उपयोग दृश्यों के पीछे xdoc2txt – Sogger

3

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

1

यदि आप जावा का उपयोग कर रहे हैं, तो आप 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) 

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

+2

आपका उत्तर पोस्ट करने के लिए धन्यवाद! कृपया सावधानीपूर्वक [स्व-संवर्धन पर अक्सर पूछे जाने वाले प्रश्न] (http://stackoverflow.com/faq#promotion) को पढ़ना सुनिश्चित करें।यह भी ध्यान रखें कि यह * आवश्यक * है कि जब भी आप अपनी साइट/उत्पाद से लिंक करते हैं तो आप एक अस्वीकरण पोस्ट करते हैं। –

2

उपयोग Altova DiffDog

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

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

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

  2. इस रूप में सहेजें

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

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

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

1

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

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

+0

यह _not_ विशेष रूप से अच्छी तरह से काम करता है, हालांकि, एक्सेल के एक्सएलएस प्रारूप जैसे बाइनरी फ़ाइलों के लिए। –

+1

@ चार्ल्सवुड - वास्तव में यह _does_ विशेष रूप से अच्छी तरह से काम करता है। कछुआ भिन्नता प्रदान करने के लिए एक्सेल का उपयोग करता है और विभिन्न कोशिकाओं को लाल रंग में हाइलाइट करता है। मैंने कोशिश नहीं की है, लेकिन मुझे पूरा यकीन है कि यह Word .doc और .docx फ़ाइलों के लिए भी वही करता है (वर्ड का उपयोग करके जो भिन्न दर्शक के रूप में होता है)। –

+0

व्हाट! मेरा ऐसा नहीं करता है। क्या यह एक नई सुविधा है या आपने प्लगइन स्थापित किया है? –

9

आप इस मुफ्त ऑनलाइन उपकरण की कोशिश कर सकते हैं - पंक्तियों के मामले में www.cloudyexcel.com/compare-excel/

यह एक अच्छा दृश्य उत्पादन ऑनलाइन देता है, कहा, नष्ट कर दिया, आदि

enter image description here

बदल इसके अलावा आप donot करने के लिए है कुछ भी स्थापित करें।

+0

दुख की बात यह केवल <2 एमबी फाइलों के लिए काम करती है। वैसे भी, यह किसी और के लिए काम कर सकता है। – MikeVelazco

0

मुझे आपके जैसी समस्या मिली है इसलिए मैं मदद करने के लिए छोटे टूल लिखने का फैसला करता हूं। कृपया ExcelDiff_Tools देखें। यह कई महत्वपूर्ण बिंदुओं के साथ आता है:

  • समर्थन xls, xlsx, xlsm।
  • फॉर्मूला सेल के साथ। यह सूत्र और मूल्य दोनों की तुलना करेगा।
  • मैं यूआई को मानक diff टेक्स्ट व्यूअर की तरह दिखने की कोशिश करता हूं: संशोधित, हटाया गया, जोड़ा गया, अपरिवर्तित स्थिति। कृपया उदाहरण के लिए नीचे दी गई छवि के साथ एक बार देख ले: एमएस ऑफ़िस के enter image description here
1

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

+0

हालांकि यह उत्तर शायद ओपी की स्थिति को 'diff' विलय आधारित कमांड लाइन के साथ मदद नहीं करेगा, यह स्प्रेडशीट तुलना टूल मेरे उद्देश्यों के लिए बिल्कुल सही था (ओपनएक्सएमएल स्वचालन आउटपुट बनाम एक्सेल COM ऑटोमेशन आउटपुट के बीच मतभेदों की जांच)। – ErrCode

+0

नोट: मैंने इस उपकरण का उपयोग करके स्वचालन की जांच करने का प्रयास किया है, लेकिन यह मेरे लिए काम नहीं करता है (टूल बस क्रैश हो रहा है): https://stackoverflow.com/a/35905262/7270462 – ErrCode

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^