बैच XLS को XLSX में परिवर्तित करता है


12

मुझे एक पुराने एप्लिकेशन के साथ काम करना है जो केवल XLS फाइलें निर्यात कर सकता है और मैं .PPlus लाइब्रेरी का उपयोग करके .Net में प्रोग्राम लिखता हूं जो केवल XLSX फाइलों को पढ़ने में सक्षम है।

बैच को XLS से XLSX में बदलने का सबसे आसान तरीका क्या है?

जवाबों:


6

कार्यालय प्रवास योजना प्रबंधक की जाँच करें।

टूलकिट में Office फ़ाइल कनवर्टर (OFC) भी है, जो बाइनरी से ओपनएक्सएमएल प्रारूपों के लिए थोक दस्तावेज़ रूपांतरण सक्षम करता है। ( तकनीक )

तकनीक पर अवलोकन

डाउनलोड लिंक

ध्यान दें कि आपको Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File FormatsOFC के काम करने की भी आवश्यकता होगी ।
दोनों उपकरण वास्तव में अब समर्थित नहीं हैं।


1
यह काफी कुछ लोगों को दिखाई देता है, जिनमें मैं भी शामिल हूं, इस उपकरण के साथ समस्या है कि बिना किसी कारण के अपनी xls फ़ाइलों को परिवर्तित करने में विफल।
जॉन

3

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

इस कोड को Excel 2007 या कार्यपुस्तिका से ऊपर चलाने की आवश्यकता होगी।

Option Explicit

' Convert all xls files in selected folder to xlsx

Public Sub convertXLStoXLSX()

    Dim FSO As Scripting.FileSystemObject
    Dim strConversionPath As String
    Dim fFile As File
    Dim fFolder As Folder
    Dim wkbConvert As Workbook

    ' Open dialog and select folder
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Show
        On Error Resume Next ' Prevent debug mode if user cancels selection
        strConversionPath = .SelectedItems(1)
        On Error GoTo 0      ' Re-enable default error handling
    End With

    Set FSO = New Scripting.FileSystemObject

    ' Check if the folder exists
    If FSO.FolderExists(strConversionPath) Then
        Set fFolder = FSO.GetFolder(strConversionPath)

        ' Disable confirmation dialogs (to prevent "unsaved changes" dialog popping up)
        ' and screen updates (to speed up conversion)
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False

        ' Loop through files, find the .xls files
        For Each fFile In fFolder.Files
            If LCase$(Right(fFile.Name, 4)) = ".xls" Then
                ' Open temporary workbook
                Set wkbConvert = Workbooks.Open(fFile.Path)
                ' Save as OpenXML workbook - if your .xls files contain macros
                ' then change to FileFormat:=xlOpenXMLWorkbookMacroEnabled
                wkbConvert.SaveAs FSO.BuildPath(fFile.ParentFolder, _
                                    Left(fFile.Name, Len(fFile.Name) - 4)) & ".xlsx", _
                                  FileFormat:=xlOpenXMLWorkbook
                wkbConvert.Close SaveChanges:=False
                ' Delete original file
                fFile.Delete Force:=True
            End If
        Next fFile

        ' Re-enable confirmation dialogs and screen updates
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True

    End If

End Sub

नोट: यदि आप जिन फ़ाइलों को परिवर्तित कर रहे हैं उनमें मैक्रोज़ हैं तो आपको FileFormat:=xlOpenXMLWorkbookपढ़ने के लिए अद्यतन करने की आवश्यकता होगी FileFormat:=xlOpenXMLWorkbookMacroEnabled। या यदि आपको कनवर्ट की गई फ़ाइलों में मैक्रो कोड की आवश्यकता नहीं है, तो आप इसे अकेले छोड़ सकते हैं और जब यह xlsx प्रारूप में कनवर्ट करता है तो यह मैक्रोज़ को हटा देगा।


क्या होगा यदि मैं .CSV को .XLSX में रूपांतरित करना चाहता हूं?
बोरिस_वाई

1

इसलिए मैंने .xlsx को एक मूक अंदाज में .xls फाइल को कन्वर्ट करने के लिए एक सरल VBScript लिखा।

./convert-xls-xlsx.vbs {फ़ोल्डर युक्त .xls फ़ाइलों का पथ}

कन्वर्ट- xls-xlsx.vbs:

    सेट args = WScript.Arguments
    strPath = args (0)
    strPath = CreateObject ("Scripting.FileSystemObject")। GetAbsolutePathName (strPath)
    ObjExcel = CreateObject ("Excel.Application") सेट करें
    objExcel। अदृश्य = गलत
    objExcel.DisplayAlerts = गलत
    सेट करें objFso = CreateObject ("Scripting.FileSystemObject")
    ObjFolder = objFso.GetFolder (strPath) सेट करें
    प्रत्येक objFile के लिए objFolder.Files में
        fileName = objFile.Path
        यदि (objFso.GetExtensionName (objFile.Path) = "xls") तब
            ObjWorkbook = objExcel.Workbooks.Open (फ़ाइल नाम) सेट करें
            saveFileName = बदलें (फ़ाइल नाम, "xls", "xlsx")
            objWorkbook.SaveAs saveFileName, 51
            objWorkbook.Close ()
            objExcel.Application.DisplayAlerts = सच
        अगर अंत
    आगे
    MsgBox "समाप्त रूपांतरण"

नोट: फ़ोल्डर पथ में रिक्त स्थान के लिए देखें, यदि आपके पथ के बीच में स्थान है, तो पथ को उद्धरण में रखें।


मैंने DisplayAlerts को = False में बदल दिया क्योंकि मैं किसी मैक्रोज़ के बारे में नहीं जानना चाहता, बस उन्हें हटा दूं, इसीलिए मैं इन चीजों को पहली जगह में परिवर्तित कर रहा हूं। फिर अंतिम MsgBox को हटा दिया, क्योंकि मैं नहीं चाहता था कि यह मुझे गुस्सा दिलाए।
BeowulfNode42

@ BeowulfNode42 शांत, लेकिन मुझे लगता है कि मैंने DisplayAlerts को रखा क्योंकि मेरे कार्यपुस्तिकाएँ भ्रष्ट थीं। लेकिन फिर मुझे अब ठीक से याद नहीं है।
रिवॉस्फेट

0
उप SaveAllAsXLSX ()
स्ट्रिंग के रूप में डिम स्ट्रफिलनेम
स्ट्रिंग के रूप में मंद strDocName
स्ट्रिंग के रूप में मंद strPath
कार्यपुस्तिका के रूप में डिम wbk
FileDialog के रूप में मंद fDialog
इंटेगर के रूप में डिम इंटपोस
स्ट्रिंग के रूप में मंद स्ट्रैसवर्ड
स्ट्रिंग के रूप में मंद स्ट्रैप्रैसपॉवर्ड
स्ट्रिंग के रूप में मंद varA
स्ट्रिंग के रूप में मंद varB
नए संग्रह के रूप में डिम कॉलफाइल्स
डिम vFile As Variant
FDialog = Application.FileDialog (msoFileDialogFolderPicker) सेट करें
FDialog के साथ
    .Title = "फ़ोल्डर का चयन करें और ठीक क्लिक करें"
    .AllowMultiSelect = सच
    .InitialView = msoFileDialogViewList
    य द .Show -1 तब
        MsgBox "उपयोगकर्ता द्वारा रद्द", "सूची फ़ोल्डर सामग्री"
        उप से बाहर निकलें
    अगर अंत
    strPath = fDialog.SelectedItems.Item (1)
    अगर राइट (strPath, 1) "\" तो strPath = strPath + "\"
के साथ समाप्त करना
यदि वाम (strPath, 1) = Chr (34) तब
    strPath = मिड (strPath, 2, Len (strPath) - 2)
अगर अंत
Obj = CreateObject सेट करें ("Scripting.FileSystemObject")
RecursiveDir colFiles, strPath, "* .xls", ट्रू
ColFiles में प्रत्येक vFile के लिए
        डिबग.प्रिंट vFile
    strFilename = vFile
    varA = सही (strFilename, 3)
    यदि (varA = "xls" या varA = "XLSX") तब
     सेट wbk = कार्यपुस्तिका। PDF (फ़ाइल नाम: = strFilename)
       अगर wbk.HasVBProject तब
              wbk.SaveAs फ़ाइल का नाम: = strFilename & "m", FileFormat: = xlOpenXMLWorkbookMacroEnabled
            अन्य
               wbk.SaveAs फ़ाइल का नाम: = strFilename & "x", FileFormat: = xlOpenXMLWorkbook
            अगर अंत
            wbk.Close SaveChanges: = गलत
           obj.DeleteFile (strFilename)
    अगर अंत
अगला vFile

अंत उप
सार्वजनिक समारोह RecursiveDir (संग्रह के रूप में colFiles, _
                             स्ट्रिंग के रूप में फ़ोल्डर, _
                             स्ट्रिंग के रूप में strFileSpec, _
                             बूलियन के रूप में

    स्ट्रिंग के रूप में मंद स्ट्रैम्प
    नए कलेक्शन के रूप में डिम कोलोफोल्डर्स
    डिम vFolderName वेरिएंट के रूप में

    'StrFolder मिलान strFileSpec में फाइल को कॉलफाइल्स में जोड़ें
    strFolder = ट्रेलिंगस्लैश (strFolder)
    strTemp = Dir (strFolder और strFileSpec)
    DoT जबकि स्ट्रेंथ vbNullString
        colFiles.Add strFolder और strTemp
        strTemp = डर
    लूप

    अगर bIncludeSubfolders तब
        'ColFolders strFolder की उपनिर्देशिकाओं की सूची के साथ भरें
        strTemp = Dir (strFolder, vbDirectory)
        DoT जबकि स्ट्रेंथ vbNullString
            अगर (strTemp "।") और (strTemp "..") तो
                यदि (GetAttr (strFolder & strTemp) और vbDirectory) 0 तब
                    colFolders.Add strTemp
                अगर अंत
            अगर अंत
            strTemp = डर
        लूप

        ColFolders में प्रत्येक सबफ़ोल्डर के लिए कॉल RecursiveDir
        ColFolders में प्रत्येक vFolderName के लिए
            कॉल RecursiveDir (colFiles, strFolder & vFolderName, strFileSpec, True)
        अगला vFolderName
    अगर अंत

अंत समारोह
पब्लिक फंक्शन ट्रेलिंगस्लैश (स्ट्रिंग के रूप में फ़ोल्डर) स्ट्रिंग के रूप में
    अगर लेन (strFolder)> 0 तो
        यदि राइट (strFolder, 1) = "\" तो
            TrailingSlash = strFolder
        अन्य
            TrailingSlash = strFolder और "\"
        अगर अंत
    अगर अंत
अंत समारोह


8
कोड का एक गुच्छा चिपकाने के बजाय, क्या आप शायद यह भी थोड़ा समझा सकते हैं कि यह क्या करता है, इसका उपयोग कैसे करें, और सीमाएं क्या हैं (यदि कोई हो)? यह भविष्य के आगंतुकों के लिए अधिक उपयोगी होगा।
slhck

0

यदि आपके पास MsOffice स्थापित है, तो यह उपकरण त्वरित फिक्स के लिए डाउनलोड के लायक हो सकता है।

http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm

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

यदि आप अपने स्वयं के कनवर्टर का उपयोग करते हैं तो आप कोशिकाओं में रंग खो देंगे और एकल शीट बाहर आ जाती है। यदि आप MsOffice का उपयोग करते हैं, तो कनवर्टर अच्छी तरह से काम करता है। जल्दी ठीक करने के लिए अच्छा उपकरण।

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