excel-bridge: خوندن و نوشتن فایل اکسل با ۱۲.۹ کیلوبایت
خلاصهٔ کاملتر
excel-bridge یه کتابخونهی جدید برای کار با فایلهای .xlsx هست که هدفش کار رایج یعنی گزارشهای استایلدار و چندشیتیه. نویسنده میگه بازار اکسل تو جاوااسکریپت دست دو تا کتابخونهی بزرگه، ExcelJS و SheetJS، و این پروژه میخواد اونقدر کوچیک باشه که راحت تو باندل فرانتاند جا بشه. کتابخونه tree-shakeable هست، یعنی bundler فقط کلاسی که import کردی رو نگه میداره و بقیه رو میندازه.
سه تا کلاس اصلی داره: ExcelWriter برای نوشتن، ExcelReader برای خوندن، و Workbook برای باز کردن، ویرایش و ذخیرهی دوباره. طبق اندازهگیری خود پروژه با esbuild، ExcelWriter حدود ۱۲.۹ کیلوبایت min+gzip هست، ExcelReader حدود ۲۸.۷ و Workbook حدود ۴۱ کیلوبایت. برای مقایسه، ExcelJS ۴.۴.۰ حدود ۲۷۲.۱ و SheetJS حدود ۹۵.۸ کیلوبایته. یه شیء کمکی به اسم ExcelBridge هم هست، ولی چون bundlerها یه شیء رو کامل نگه میدارن، ۴۱.۱ کیلوبایت میشه.
نوشتن یه فایل ساده این شکلیه:
const writer = new ExcelWriter();
const sheet = {
data: [['Name', 'Age', 'City'], ['John', 25, 'New York']],
options: { name: 'People', freezePane: { row: 1 }, autoWidth: true },
};
const blob = writer.createWorkbook([sheet]);تو مرورگر خروجی Blob میگیری و تو Node.js با createWorkbookBuffer یه Uint8Array. نویسنده تأکید میکنه این خروجی Buffer نیست و مثلاً تو Express 4 باید با Buffer.from بپیچونیش. امکاناتش شامل استایل سلول با border جدا برای هر طرف، فرمول، تاریخ، merge، freeze pane، فرمت شرطی، data validation، autofilter و hyperlink هست. یه writer استریمی هم داره که فایلهای میلیونردیفی رو بدون نگه داشتن همهی ردیفها تو حافظه میسازه.
تو بنچمارک نوشتن ۵۰ هزار ردیف در ۱۰ ستون روی Node 24.19 و Apple M4، excel-bridge حدود ۵۶۰ میلیثانیه طول کشیده، یعنی حدود ۲.۷ برابر سریعتر از ExcelJS. نویسنده صادقانه میگه hucre با ۳۹۰ میلیثانیه سریعتره. خوندن هم کندتره: ۱.۴ تا ۱.۹ ثانیه برای همین حجم، و کل فایل تو حافظه بار میشه.
محدودیتها هم کم نیستن. عکس، نمودار، کامنت، جدول اکسل، pivot table و rich text پشتیبانی نمیشن. Workbook فایل رو از روی چیزایی که مدل میکنه از نو میسازه، پس اگه یه قالب با نمودار یا ماکرو باز کنی، اون بخشها از بین میرن. تاریخهای سیستم ۱۹۰۴ هم درست خونده نمیشن. یعنی این ابزار برای گزارشگیری مناسبه، نه برای ویرایش هر فایل اکسلی.
نکات کلیدی:
- ExcelWriter فقط ۱۲.۹ کیلوبایت min+gzip به باندل اضافه میکنه، ExcelJS حدود ۲۷۲.۱ کیلوبایته.
- فقط دو وابستگی مستقیم داره: fflate و fast-xml-parser.
- نوشتن ۵۰ هزار×۱۰ سلول حدود ۵۶۰ میلیثانیه، ۲.۷ برابر سریعتر از ExcelJS.
- ExcelReader حالت استریمی نداره و کل فایل رو تو حافظه نگه میداره.
- عکس، نمودار، کامنت و pivot table پشتیبانی نمیشن.
- خروجی ESM و CJS داره و نسخهها با provenance روی npm منتشر میشن.




