সেমিকোলন পৃথক ক্ষেত্রের সাথে কমান্ড লাইনে একটি .xlsx (এমএস এক্সেল) ফাইলকে .csv তে রূপান্তর করুন


31

আমি বুঝতে পারি যে এই হল না একটি সম্পূর্ণরূপে ইউনিক্স / লিনাক্স সম্পর্কিত প্রশ্ন। তবে যেহেতু এটি আমি লিনাক্সে কিছু করব তাই আমি আশা করি কারও উত্তর আছে।

আমার কাছে একটি অনলাইন এক্সেল ফাইল ( .xlsx) রয়েছে যা পর্যায়ক্রমে আপডেট হয় (অন্য কারও দ্বারা)। সেই এক্সেল শিটটি প্রক্রিয়া করার জন্য আমি একটি স্ক্রিপ্ট লিখতে এবং ক্রোনজব হিসাবে রাখতে চাই। তবে এটি করার জন্য, আমাকে .csvসেমিকোলন পৃথক কলামগুলির সাথে একটি পাঠ্য ফাইলে (তাই এ ) রূপান্তর করতে হবে । দুর্ভাগ্যক্রমে এটি কমা পৃথক করা যাবে না কারণ কিছু কলামে কমা রয়েছে। শেল থেকে এই রূপান্তর করা কি আদৌ সম্ভব? আমার ওপেন অফিস ইনস্টল করা আছে এবং আমি এর জিইউআই ব্যবহার করে এটি করতে পারি, তবে কমান্ড লাইন থেকে এটি করা সম্ভব কিনা তা জানতে চাই। ধন্যবাদ!

PS: আমার কাছে একটি ম্যাক মেশিনও রয়েছে, তাই যদি কিছু সমাধান সেখানে কাজ করতে পারে তবে তাও ভাল। :)

উত্তর:


21

কমান্ড লাইনে ফর্ম্যাট রূপান্তর সম্পাদন করতে ইউনোকনভিভ প্রোগ্রামটি নিয়ে ওপেনঅফিস আসে ।

unoconv -f csv filename.xlsx

আরও জটিল প্রয়োজনীয়তার জন্য, আপনি Spreadsheet::XLSXপার্ল বা openpyxlপাইথনের সাথে এক্সএলএসএক্স ফাইলগুলি বিশ্লেষণ করতে পারেন । উদাহরণস্বরূপ, সেমিকোলন-বিচ্ছিন্ন সিএসভি ফাইল হিসাবে একটি ওয়ার্কশিট প্রিন্ট করার জন্য এখানে একটি দ্রুত স্ক্রিপ্ট রয়েছে (সতর্কতা: অন্রেস্টেড, ব্রাউজারে সরাসরি টাইপ করা):

perl -MSpreadsheet::XLSX -e '
    $\ = "\n"; $, = ";";
    my $workbook = Spreadsheet::XLSX->new()->parse($ARGV[0]);
    my $worksheet = ($workbook->worksheets())[0];
    my ($row_min, $row_max) = $worksheet->row_range();
    my ($col_min, $col_max) = $worksheet->col_range();
    for my $row ($row_min..$row_max) {
        print map {$worksheet->get_cell($row,$_)->value()} ($col_min..$col_max);
    }
' filename.xlsx >filename.csv

ইউনোকনভ আমার ওও সাথে আসে নি, তবে আমি এটি ইনস্টল করেছি এবং এটি দুর্দান্ত কাজ করে (কমার বিভাজিত ফাইলে রূপান্তর করে, যদিও সেমিকোলন নয়)! ধন্যবাদ! কমাগুলি থাকা আমার ক্ষেত্রগুলি কীভাবে পাব তা আমার এখনও খুঁজে বের করতে হবে। তবে যাইহোক ধন্যবাদ।
allrit করুন

@ এলরাইট ওহ, আমি সেমিকোলনের বিভাজক হিসাবে প্রয়োজনীয়তাটি মিস করতাম। পাইথন বা পার্লে প্রসেসিংয়ের জন্য আমার পরামর্শটি এখনও দাঁড়িয়ে আছে। তবে আমি বিভাজনকারী ;হিসাবে সিএসভিতে রূপান্তর করতে একটি স্ক্রিপ্ট (অচিহ্নিত )ও যুক্ত করেছি ।
গিলস 'তাই মন্দ হওয়া বন্ধ করুন'

ধন্যবাদ! আমি স্প্রেডশিট :: এক্সএলএসএক্স ব্যবহার করেছি, তবে আপনার সরবরাহ করা সিপিএএন লিঙ্কে কোডটি ব্যবহার করেছি। এটি কাজ করে :)
লিখিত rite

1
একজন
বেনাম

9

https://github.com/dilshod/xlsx2csv

আমার জন্য ভাল কাজ করেছে। ম্যাক বুক প্রো এসএসডি-তে প্রায় 3 মিনিটে রূপান্তরিত হয় প্রায় 85 এমবি এক্সএলএসএক্স ফাইল।


1
ওএসএক্স ভাল কাজ $ python xlsx2csv.py -d ";" my.xlsx my.csvdeliminator সংজ্ঞায়িত করতে ভাল এবং ক্ষমতা কাজ করেন, আপনি + ধন্যবাদ!
এইচ এইচ

6

ফাইলগুলিতে রূপান্তর করতে আমি পার্লের xls2csv ব্যবহার করছি ।xlscsv

এটি xlsxখুব কার্যকর হলে নিশ্চিত না।

সম্পর্কিত:

দুর্ভাগ্যক্রমে এটি কমা পৃথক করা যায় না কারণ কিছু কলামে কমা রয়েছে

এজন্য উদ্ধৃতি চালু করা হয়েছে:

1,2,"data,data, more data"

টিপটির জন্য ধন্যবাদ, আমি এটি চেষ্টা করব। আমি এখনও সেমিকোলনকে আলাদা করতে পছন্দ করি, যেহেতু সিএসভি রূপান্তর হওয়ার পরে ফাইলটি awkস্ক্রিপ্টগুলির মধ্য দিয়ে যায় । ক্ষেত্র বিভাজক হিসাবে সেমিকোলন পাস করা এটি কেবল সহজ awk। আমি এগুলিকে অন্য কিছু দিয়ে প্রতিস্থাপনের জন্য কোটায় ভিতরে কমা খুঁজে পেতে পারি ... এখন
এটিই

ধন্যবাদ @ নিউরিনো আমি পরিবর্তে গিলস পদ্ধতি ব্যবহার করেছি, তবে যাইহোক উত্তর দেওয়ার জন্য ধন্যবাদ।
অলরেট

1

আমি পিএইচপি ব্যবহার করি। কেবলমাত্র http://phpexcel.codeplex.com/ থেকে PHPExel লাইব্রেরি ইনস্টল করুন এবং সম্ভবত আপনারও এক্সএমএল ফাংশন প্রয়োজন।

এটি আমার কোড:

<?php

error_reporting(E_ALL);
date_default_timezone_set('Europe/London');

/** PHPExcel_IOFactory */

require_once '/home/markov/Downloads/1.7.6/Classes/PHPExcel/IOFactory.php';

$file="RIF394305.xlsx"; //PATH TO CSV FILE

// Check prerequisites

if (!file_exists($file)) {
    exit("Please run 06largescale.php first.\n");
}

$objReader = PHPExcel_IOFactory::createReader('Excel2003XML');

$objPHPExcel = $objReader->load($file);

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');

$objWriter->save(str_replace('.xlsx', '.csv',$file));
?>

আপনি প্রক্রিয়াটি ফিরিয়ে আনতে পারেন বা বিভিন্ন এক্সেল / সিএসভি ফর্ম্যাট ব্যবহার করতে পারেন। পিএইচপিইপেক্সেল ডিরেক্টরিতে বিভিন্ন পিএইচপি ফাইলগুলি দেখুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.