উত্তর:
নোটপ্যাড খুলুন, XlsToCsv.vbs নামে একটি ফাইল তৈরি করুন এবং এতে আটকান:
if WScript.Arguments.Count < 2 Then
WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done"
তারপরে একটি কমান্ড লাইন থেকে, আপনি .vbs ফাইলটি সংরক্ষণ করে ফোল্ডারে যান এবং চালনা করুন:
XlsToCsv.vbs [sourcexlsFile].xls [destinationcsvfile].csv
এটি আপনার চালু থাকা মেশিনে এক্সেল ইনস্টল করা প্রয়োজন।
oExcel.Workbooks.Open
পছন্দসই সূচী দিয়ে রেখার পরে নিম্নলিখিত লাইনটি যুক্ত করুন (1 এ শুরু হবে): oBook.Worksheets(1).Activate
স্কটএফ উত্তরের একটি সামান্য পরিবর্তিত সংস্করণ, যার জন্য নিখুঁত ফাইল পাথের প্রয়োজন নেই:
if WScript.Arguments.Count < 2 Then
WScript.Echo "Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> <csv destination file>"
Wscript.Quit
End If
csv_format = 6
Set objFSO = CreateObject("Scripting.FileSystemObject")
src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1))
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)
oBook.SaveAs dest_file, csv_format
oBook.Close False
oExcel.Quit
আমি স্ক্রিপ্টটির নামকরণ করেছি এক্সেলটোকসভি, যেহেতু এই স্ক্রিপ্টটি কেবল এক্সএলএস-এর মধ্যে সীমাবদ্ধ নয়। xlsx ঠিক কাজ করে, যেমনটি আমরা আশা করতে পারি।
অফিস 2010 এর সাথে পরীক্ষিত।
স্কটএফের গ্রোভি ভিবি স্ক্রিপ্টের একটি ছোট সম্প্রসারণ: এই ব্যাচ ফাইলটি একটি ডিরেক্টরিতে .xlsx ফাইলের মধ্য দিয়ে লুপ করবে এবং তাদের * .csv ফাইলগুলিতে ফেলে দেবে:
FOR /f "delims=" %%i IN ('DIR *.xlsx /b') DO ExcelToCSV.vbs "%%i" "%%i.csv"
দ্রষ্টব্য: আপনি এক্সটেনশন .xlsx .xls এবং স্ক্রিপ্ট এক্সেলটোসএসভি এর নাম XlsToCsv এ পরিবর্তন করতে পারেন
পাওয়ারশেলের সাথে কীভাবে?
কোডটি দেখতে এমন হওয়া উচিত, যদিও এটি পরীক্ষা করা হয় না
$xlCSV = 6
$Excel = New-Object -Com Excel.Application
$Excel.visible = $False
$Excel.displayalerts=$False
$WorkBook = $Excel.Workbooks.Open("YOUDOC.XLS")
$Workbook.SaveAs("YOURDOC.csv",$xlCSV)
$Excel.quit()
এটি কীভাবে ব্যবহার করবেন সে সম্পর্কে এখানে একটি পোস্ট রয়েছে
মাইক্রোসফ্ট এক্সেলটি স্বয়ংক্রিয় করতে আমি কীভাবে উইন্ডোজ পাওয়ারশেল ব্যবহার করতে পারি?
$Excel.Workbooks.Open
পদ্ধতিটি নিয়ে অসুবিধা । এটি নির্দিষ্ট ফাইলটি খুঁজে পায়নি। Get-Item
ফাইলটি ব্যবহার করে এবং ForEach-Object
দুটি লাইন দিয়ে শুরু করে দুটি লুপের জন্য ( এটি কোনওভাবেই আমার চূড়ান্ত বাস্তবায়নে শেষ করব) এর মাধ্যমে আমি এটিকে ঘিরে কাজ করেছি $Workbook
।
CD /D C:\ && DIR YOURDOC.csv /s
। ফাইলটি ডিফল্টরূপে আমার দস্তাবেজে সংরক্ষণ করা হয়েছিল। সুতরাং, আপনি যে ফোল্ডারে কাজ করছেন সেই ফাইলটি (আমার দস্তাবেজগুলি বাদে অন্য যদি) ফাইলটি সংরক্ষণ করতে চান তবে আপনাকে স্ক্রিপ্টে আরও রাখতে হবে।
আমার বিভিন্ন ওয়ার্কশিট থেকে বেশ কয়েকটি সিভি বের করার দরকার ছিল, তাই এখানে প্লাং কোডের একটি পরিবর্তিত সংস্করণ রয়েছে যা আপনাকে কার্যপত্রকের নামটি নির্দিষ্ট করতে দেয়।
if WScript.Arguments.Count < 3 Then
WScript.Echo "Please specify the sheet, the source, the destination files. Usage: ExcelToCsv <sheetName> <xls/xlsx source file> <csv destination file>"
Wscript.Quit
End If
csv_format = 6
Set objFSO = CreateObject("Scripting.FileSystemObject")
src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(1))
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(2))
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)
oBook.Sheets(WScript.Arguments.Item(0)).Select
oBook.SaveAs dest_file, csv_format
oBook.Close False
oExcel.Quit
এখানে এমন একটি সংস্করণ যা একাধিক ফাইলগুলিকে উইন্ডোজ থেকে টেনে আনবে এবং হ্যান্ডেল করবে। উপরোক্ত কাজের উপর ভিত্তি করে
Christian Lemer
plang
ScottF
নোটপ্যাড খুলুন, XlsToCsv.vbs নামে একটি ফাইল তৈরি করুন এবং এতে আটকান:
'* Usage: Drop .xl* files on me to export each sheet as CSV
'* Global Settings and Variables
Dim gSkip
Set args = Wscript.Arguments
For Each sFilename In args
iErr = ExportExcelFileToCSV(sFilename)
' 0 for normal success
' 404 for file not found
' 10 for file skipped (or user abort if script returns 10)
Next
WScript.Quit(0)
Function ExportExcelFileToCSV(sFilename)
'* Settings
Dim oExcel, oFSO, oExcelFile
Set oExcel = CreateObject("Excel.Application")
Set oFSO = CreateObject("Scripting.FileSystemObject")
iCSV_Format = 6
'* Set Up
sExtension = oFSO.GetExtensionName(sFilename)
if sExtension = "" then
ExportExcelFileToCSV = 404
Exit Function
end if
sTest = Mid(sExtension,1,2) '* first 2 letters of the extension, vb's missing a Like operator
if not (sTest = "xl") then
if (PromptForSkip(sFilename,oExcel)) then
ExportExcelFileToCSV = 10
Exit Function
end if
End If
sAbsoluteSource = oFSO.GetAbsolutePathName(sFilename)
sAbsoluteDestination = Replace(sAbsoluteSource,sExtension,"{sheet}.csv")
'* Do Work
Set oExcelFile = oExcel.Workbooks.Open(sAbsoluteSource)
For Each oSheet in oExcelFile.Sheets
sThisDestination = Replace(sAbsoluteDestination,"{sheet}",oSheet.Name)
oExcelFile.Sheets(oSheet.Name).Select
oExcelFile.SaveAs sThisDestination, iCSV_Format
Next
'* Take Down
oExcelFile.Close False
oExcel.Quit
ExportExcelFileToCSV = 0
Exit Function
End Function
Function PromptForSkip(sFilename,oExcel)
if not (VarType(gSkip) = vbEmpty) then
PromptForSkip = gSkip
Exit Function
end if
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
sPrompt = vbCRLF & _
"A filename was received that doesn't appear to be an Excel Document." & vbCRLF & _
"Do you want to skip this and all other unrecognized files? (Will only prompt this once)" & vbCRLF & _
"" & vbCRLF & _
"Yes - Will skip all further files that don't have a .xl* extension" & vbCRLF & _
"No - Will pass the file to excel regardless of extension" & vbCRLF & _
"Cancel - Abort any further conversions and exit this script" & vbCRLF & _
"" & vbCRLF & _
"The unrecognized file was:" & vbCRLF & _
sFilename & vbCRLF & _
"" & vbCRLF & _
"The path returned by the system was:" & vbCRLF & _
oFSO.GetAbsolutePathName(sFilename) & vbCRLF
sTitle = "Unrecognized File Type Encountered"
sResponse = MsgBox (sPrompt,vbYesNoCancel,sTitle)
Select Case sResponse
Case vbYes
gSkip = True
Case vbNo
gSkip = False
Case vbCancel
oExcel.Quit
WScript.Quit(10) '* 10 Is the error code I use to indicate there was a user abort (1 because wasn't successful, + 0 because the user chose to exit)
End Select
PromptForSkip = gSkip
Exit Function
End Function
নিজের লেখেন না কেন?
আমি আপনার প্রোফাইল থেকে দেখছি আপনার কমপক্ষে কিছু সি # /। নেট অভিজ্ঞতা আছে। আমি একটি উইন্ডোজ কনসোল অ্যাপ্লিকেশন তৈরি করেছি এবং আপনার এক্সেল ফাইল (গুলি) পড়ার জন্য একটি বিনামূল্যে এক্সেল রিডার ব্যবহার করব। আমি কোডপ্লেক্স থেকে কোনও সমস্যা ছাড়াই উপলব্ধ এক্সেল ডেটা রিডার ব্যবহার করেছি (একটি দুর্দান্ত জিনিস: এই পাঠকটি এক্সেল ইনস্টল করার প্রয়োজন নেই)। আপনি কমান্ড লাইন থেকে আপনার কনসোল অ্যাপ্লিকেশন কল করতে পারেন।
আপনি যদি এখানে নিজেকে আটকে থাকা পোস্ট দেখতে পান এবং আমি নিশ্চিত যে আপনি সহায়তা পাবেন।
আপনি এটি আলাকান - আলাসকল ডাটাবেসের জন্য কমান্ড-লাইন ইউটিলিটি দিয়ে করতে পারেন । এটি নোড.জেএস এর সাথে কাজ করে, সুতরাং আপনাকে নোড.জেএস এবং তারপরে আলাসকল প্যাকেজ ইনস্টল করতে হবে ।
এক্সেল ফাইলটি সিভিএসে রূপান্তর করতে (ওটি টিএসভি) আপনি প্রবেশ করতে পারেন:
> node alacon "SELECT * INTO CSV('mydata.csv', {headers:true}) FROM XLS('mydata.xls', {headers:true})"
ডিফল্টরূপে আলাস্কল "শীট 1" থেকে ডেটা রূপান্তর করে তবে আপনি এটি পরামিতিগুলির সাহায্যে পরিবর্তন করতে পারেন:
{headers:false, sheetid: 'Sheet2', range: 'A1:C100'}
অ্যালাকন অন্যান্য ধরণের রূপান্তরকে সমর্থন করে (সিএসভি, টিএসভি, টিএক্সটি, এক্সএলএসএক্স, এক্সএলএস) এবং এসকিউএল ভাষা নির্মাণ ( উদাহরণগুলির জন্য ব্যবহারকারী ম্যানুয়াল দেখুন )।
উইন্ডোজটিতে একটি এক্সেল ওএলইডিবি ডেটা সরবরাহকারী রয়েছে; আপনি এটি ADO.NET এর মাধ্যমে এক্সেল শিটটি 'ক্যোয়ারী' করতে এবং সিএসভি ফাইলে ফলাফল লিখতে পারেন। এখানে প্রচুর পরিমাণে কোডিং প্রয়োজন, তবে আপনাকে মেশিনে কোনও কিছু ইনস্টল করার দরকার নেই।
সমস্ত ট্রেডের জোন যা সরবরাহ করেছে তার উপর ভিত্তি করে, নিম্নলিখিত () n) সমস্যাযুক্ত ডাবল এক্সটেনশন ইস্যুটিকে সরিয়ে দিয়েছে:
FOR /f "delims=" %%i IN ('DIR *.xlsx /b') DO ExcelToCSV.vbs "%%i" "%%~ni.csv"
আমি স্কটএফ ভিবি সমাধান চেষ্টা করেছিলাম এবং এটি কার্যকর হয়েছি। তবে আমি একটি মাল্টি-ট্যাব (ওয়ার্কবুক) এক্সেল ফাইলটিকে একক .csv ফাইলে রূপান্তর করতে চেয়েছিলাম।
এটি কার্যকর হয়নি, কেবলমাত্র একটি ট্যাব (যখন এটি আমি এক্সেলের মাধ্যমে খুলি তখন হাইলাইট করা হয়) অনুলিপি করা হয়।
কোনও স্ক্রিপ্ট সম্পর্কে কি সচেতন যে কোনও মাল্টি-ট্যাব এক্সেল ফাইলটিকে একটি একক .csv ফাইলে রূপান্তর করতে পারে?
স্কট এফ এর উত্তরটি আমি ইন্টারনেটে সবচেয়ে ভাল খুঁজে পেয়েছি। আমার প্রয়োজন মেটাতে আমি তার কোডটিতে যুক্ত করেছিলাম। আমি যোগ করলাম:
ত্রুটিতে পুনরায় সূচনা করুন পরবর্তী <- উপরে আমার ব্যাচের প্রসেসিংয়ে হারিয়ে যাওয়া এক্সএলএস ফাইলগুলির অ্যাকাউন্ট করতে। ওবুক.এপ্লিকেশন.কলামগুলি ("এ: জে")। সংখ্যাফর্ম্যাট = "@" <- সেভএ লাইনটি শুরুর শুরুর মুছে ফেলা এবং আমার ডেটাতে নম্বর স্ট্রিংগুলিতে কমাগুলি অপসারণ থেকে এক্সেল রাখতে টেক্সট হিসাবে ফর্ম্যাট করা আছে তা নিশ্চিত করার জন্য অর্থাত (1,200 থেকে 1200)। আপনার নীডগুলি পূরণ করার জন্য কলামের ব্যাপ্তি সামঞ্জস্য করা উচিত (এ: জে)।
আমি ইকোটিকে "ইন্টারেটিভ" না করার জন্য "সম্পন্ন "ও সরিয়েছি।
আমি তখন কোনও টাস্কের মাধ্যমে প্রতি ঘন্টা ভিত্তিতে স্বয়ংক্রিয় ডেটা প্রক্রিয়াকরণের জন্য স্ক্রিপ্টটি একটি সিএমডি ব্যাচ ফাইলে যুক্ত করেছি।
এই উত্তরগুলোর সব আমাকে অনুসরণ স্ক্রিপ্ট যা স্বয়ংক্রিয়ভাবে XLS * CSV তে ফাইল রূপান্তর হবে গঠন করা সাহায্য করেছে এবং তদ্বিপরীত স্ক্রিপ্ট (অথবা কম্যান্ড লাইনের মাধ্যমে) এ এক বা একাধিক ফাইল ড্রপ দ্বারা। জানকী বিন্যাসের জন্য ক্ষমা চাই।
' /programming/1858195/convert-xls-to-csv-on-command-line
' https://gist.github.com/tonyerskine/77250575b166bec997f33a679a0dfbe4
' https://stackoverflow.com/a/36804963/1037948
'* Global Settings and Variables
Set args = Wscript.Arguments
For Each sFilename In args
iErr = ConvertExcelFormat(sFilename)
' 0 for normal success
' 404 for file not found
' 10 for file skipped (or user abort if script returns 10)
Next
WScript.Quit(0)
Function ConvertExcelFormat(srcFile)
if IsEmpty(srcFile) OR srcFile = "" Then
WScript.Echo "Error! Please specify at least one source path. Usage: " & WScript.ScriptName & " SourcePath.xls*|csv"
ConvertExcelFormat = -1
Exit Function
'Wscript.Quit
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
srcExt = objFSO.GetExtensionName(srcFile)
' the 6 is the constant for 'CSV' format, 51 is for 'xlsx'
' https://msdn.microsoft.com/en-us/vba/excel-vba/articles/xlfileformat-enumeration-excel
' https://www.rondebruin.nl/mac/mac020.htm
Dim outputFormat, srcDest
If LCase(Mid(srcExt, 1, 2)) = "xl" Then
outputFormat = 6
srcDest = "csv"
Else
outputFormat = 51
srcDest = "xlsx"
End If
'srcFile = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
srcFile = objFSO.GetAbsolutePathName(srcFile)
destFile = Replace(srcFile, srcExt, srcDest)
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(srcFile)
' preserve formatting? https://stackoverflow.com/a/8658845/1037948
'oBook.Application.Columns("A:J").NumberFormat = "@"
oBook.SaveAs destFile, outputFormat
oBook.Close False
oExcel.Quit
WScript.Echo "Conversion complete of '" & srcFile & "' to '" & objFSO.GetFileName(destFile) & "'"
End Function
:: ইউটিএফ -8 এর জন্য মাইক্রোসফ্ট অফিস 2016 এবং তারও বেশি কাজের জন্য!
এই কোড ব্যবহার করে দেখুন:
if WScript.Arguments.Count < 2 Then
WScript.Echo "Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> <csv destination file>"
Wscript.Quit
End If
csv_format = 62
Set objFSO = CreateObject("Scripting.FileSystemObject")
src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1))
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)
oBook.SaveAs dest_file, csv_format
oBook.Close False
oExcel.Quit
আপনার ডেস্কটপে "xls2csv.vbs" নামে একটি টিএক্সটি ফাইল তৈরি করুন এবং কোডটি পেস্ট করুন:
Dim vExcel
Dim vCSV
Set vExcel = CreateObject("Excel.Application")
Set vCSV = vExcel.Workbooks.Open(Wscript.Arguments.Item(0))
vCSV.SaveAs WScript.Arguments.Item(0) & ".csv", 6
vCSV.Close False
vExcel.Quit
এটিতে একটি এক্সএলএস ফাইল টেনে আনুন ("টেস্ট.এক্সলস" এর মতো)। এটি "test.xls.csv" নামে একটি রূপান্তরিত সিএসভি ফাইল তৈরি করবে। তারপরে, এটির নামকরণ "test.csv" করুন। সম্পন্ন.