رهام رفیعی تهرانی
رهام رفیعی تهرانی
خواندن ۲ دقیقه·۳ سال پیش

تبدیل کردن فایل xlsx به csv با حفظ utf8 encoding

بعضی موقع ها یک کارایی پیش میاد لابلای کارهای اصلی که ربطی به کار اصلی آدم نداره. ولی به عنوان یک حرفه ای باید تمام و کمال از پس این مُدل کارها بر بیایم و هیچ حرف و غُری هم در کار نباشه. یکی از کارهایی که چند وقت پیش برای من پیش اومده بود، از این دست کارها بود. باید یک فایل xlsx رو وارد دیتابیس میکردم و نیاز داشتم راهی براش پیدا کنم.

به ذهنم رسید که اگر محتوای فایل رو به csv با فرمت utf8 encoding تبدیل کنم، بقیه ش زمان زیادی نمیبره و یک اسکریپته که مثل یک پازل ساده حلش میکنم. ایده ام جواب داد و از انجام دادن یک کار فرعی با دو سه تا چالش بسی لذت بردم. دلیلی که این مقاله رو در موردش می نویسم اینه که دو سه بار به دیوار خوردم و به نظرم ارزش یک مقاله جمع و جور رو داره که باهاش تجربه ام رو با شما به اشتراک بگذارم.

یک تجربه به درد بخور دارم که هیچ وقت در فایل های اصلی منبع (مثل فایل اکسلی که به دستم رسیده بود) تغییر نمیدم. یک کپی ازش میگیرم و کار رو با فایل کپی (my-file.xlsx) شروع میکنم.

فایل my-file.xlsx فایل کپی از فایل اصلی است.
فایل my-file.xlsx فایل کپی از فایل اصلی است.


بعد ستون هایی که لازم دارم رو در یک فایل جدید کپی میکنم و ذخیره میکنم. فایل جدید برای تبدیل به csv آماده است.

فایل to-csv.xlsx آماده تبدیل به csv است.
فایل to-csv.xlsx آماده تبدیل به csv است.


حالا موقع تبدیل فایل به csv هست. اما یک نکته مهم داره. تبدیل مستقیم به csv بدون در نظر گرفتن utf8 encoding همه اطلاعات شما رو به هم میریزه. برای همین من مسیر زیر رو انتخاب کردم. اول تبدیلش کردم به یک فایل txt که به صورت utf8 encoding ذخیره شده. برای این کار، save as را انتخاب و روی گزینه This PC کلیک کردم.


پنجره Save As که باز شد، خروجی رو از نوع unicode text انتخاب کردم.


بعد از ذخیره فایل بنام to-csv.txt عملا یک فایل متنی داشتم که خط به خط اطلاعات داخل ستون ها ذخیره شده و بین اطلاعات ستون ها کاراکتر tab (\t) قرار داره. حالا که خیالمون راحته که encoding فایل درسته، با یک تغییر کاراکتر tab به کاما (,) در کل فایل متنی، محتوای فایل تبدیل به csv استاندارد میشه.

تبدیل همه کاراکترهای tab به کاما (,)
تبدیل همه کاراکترهای tab به کاما (,)


و بعدش فقط کافیه extension فایل رو از txt به csv تغییر بدیم.

فایل csv ما با encoding درست و محتوای استاندارد آماده است.

اگر راه بهتری بلدید یا تسلط بیشتری روی اکسل دارید یا نقطه نظر خاصی دارید، لطفا حتما به اشتراک بگذارید :)



excelcsv
برنامه نویسی یک شغل نیست، یک هنره.
شاید از این پست‌ها خوشتان بیاید