تقسیم کتاب‌های کار بزرگ Excel به شیت‌های جداگانه یک نیاز رایج است وقتی می‌خواهید داده‌ها را بر حسب شیت پردازش یا توزیع کنید. قابلیت split Excel Workbook in Java به توسعه‌دهندگان امکان می‌دهد هر شیت را برای پردازش یا گزارش‌گیری جداگانه ایزوله کنند. Conholdate.Total for Java یک SDK قدرتمند فراهم می‌کند که این کار را در برنامه‌های Java به‌صورت ساده انجام می‌دهد. در این راهنما شما یک مثال کامل کد را خواهید دید، یاد می‌گیرید چگونه کتابخانه را تنظیم کنید، ملاحظات عملکرد را درک کنید، و نکات عملی برای مدیریت کارآمد فایل‌های بزرگ XLSX دریافت کنید.

مثال کامل عملی برای تقسیم کتاب‌کار Excel در Java

این مثال نشان می‌دهد که چگونه یک کتاب‌کار Excel را با استفاده از Conholdate.Total به فایل‌های جداگانه تقسیم کنید.

import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.aspose.cells.SaveFormat;
import java.io.File;

public class ExcelSplitter {
    public static void main(String[] args) {
        String sourceFile = "input.xlsx";
        String outputDir = "splitted";

File dir = new File(outputDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }

try {
            Workbook sourceWorkbook = new Workbook(sourceFile);
            int sheetCount = sourceWorkbook.getWorksheets().getCount();

for (int i = 0; i < sheetCount; i++) {
                Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
                Workbook splitWorkbook = new Workbook();

splitWorkbook.getWorksheets().addCopy(sheet);
                if (splitWorkbook.getWorksheets().getCount() > 1) {
                    splitWorkbook.getWorksheets().removeAt(0);
                }

String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
                String outPath = outputDir + File.separator + safeName + ".xlsx";

splitWorkbook.save(outPath, SaveFormat.XLSX);
                splitWorkbook.dispose();
            }

sourceWorkbook.dispose();
        } catch (Exception e) {
            System.err.println("Error during splitting: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

توجه: این مثال کد عملکرد اصلی را نشان می‌دهد. قبل از استفاده از آن در پروژه خود، اطمینان حاصل کنید که مسیرهای فایل و مقادیر پیکربندی را به‌گونه‌ای به‌روزرسانی کنید که با محیط واقعی شما مطابقت داشته باشد، بررسی کنید که تمام وابستگی‌های مورد نیاز به‌درستی نصب شده‌اند و به‌طور کامل در محیط توسعه خود تست کنید. اگر با مشکلی مواجه شدید، لطفاً به مستندات رسمی مراجعه کنید یا برای دریافت کمک با تیم پشتیبانی تماس بگیرید.

کلاس‌های کلیدی استفاده شده

این قطعه کد به سه کلاس اصلی از کتابخانه Aspose.Cells که همراه با Conholdate.Total ارائه می‌شود، وابسته است:

  • Workbook - نمایانگر یک فایل کامل Excel است و روش‌هایی برای بارگذاری، ذخیره و دستکاری کتاب‌کارها فراهم می‌کند. برای مرجع API کلاس Workbook، به Workbook class API reference مراجعه کنید.
  • Worksheet - دسترسی به یک شیت منفرد درون یک کتاب‌کار را فراهم می‌کند.
  • SaveFormat - شمارشی که فرمت خروجی را تعریف می‌کند؛ SaveFormat.XLSX فایل را در کانتینر مدرن XLSX می‌نویسد.

این کلاس‌ها سبک هستند، اما منابع بومی را تخصیص می‌دهند، بنابراین آزادسازی سریع آن‌ها (همان‌طور که نشان داده شده) برای مدیریت حافظه برای فایل‌های اکسل بزرگ ضروری است.

تجزیه کتاب‌کار اکسل تقسیم‌شده در جاوا

این برنامه یک توالی واضح را دنبال می‌کند که می‌توانید آن را برای هر جریان کاری Excel Split Java سازگار کنید.

توضیح گام به گام

  1. بارگذاری کتاب کار منبع - new Workbook(sourceFile) ورودی XLSX را می‌خواند.
Workbook sourceWorkbook = new Workbook(sourceFile);
  1. ایجاد پوشه خروجی - بررسی می‌کند که آیا پوشه هدف وجود دارد و در صورت نیاز آن را ایجاد می‌کند.
File dir = new File(outputDir);
if (!dir.exists()) {
    dir.mkdirs();
}
  1. تکرار در برگه‌ها - sourceWorkbook.getWorksheets().getCount() تعداد برگه‌ها را می‌دهد و حلقه هر برگه را پردازش می‌کند.
for (int i = 0; i < sheetCount; i++) {
    Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
}
  1. کپی کردن شیت فعلی به یک کتاب کار جدید - addCopy(sheet) شیت را تکثیر می‌کند، سپس اگر شیت خالی پیش‌فرض موجود باشد حذف می‌شود.
Workbook splitWorkbook = new Workbook();
splitWorkbook.getWorksheets().addCopy(sheet);
if (splitWorkbook.getWorksheets().getCount() > 1) {
    splitWorkbook.getWorksheets().removeAt(0);
}
  1. ذخیره‌سازی کتاب کار تقسیم‌شده - یک نام فایل ایمن تولید می‌کند و شیت را به‌عنوان فایل XLSX می‌نویسد.
String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
String outPath = outputDir + File.separator + safeName + ".xlsx";
splitWorkbook.save(outPath, SaveFormat.XLSX);
  1. آزادسازی منابع - متد dispose() را بر روی هر دو کتاب‌کار موقت و منبع فراخوانی می‌کند تا حافظه آزاد شود و از نشت‌های بومی جلوگیری شود.

کل جریان یک مثال کد جاوا برای تقسیم برگه‌های اکسل است که می‌تواند در خطوط پردازش داده‌های بزرگتر جاسازی شود.

پیش‌نیازها و تنظیمات - شروع کار با Conholdate.Total

قبل از اینکه بتوانید مثال را کامپایل و اجرا کنید، اطمینان حاصل کنید که محیط توسعه شما الزامات زیر را برآورده می‌کند.

پیکربندی Maven

مخزن Maven Conholdate و وابستگی SDK را به فایل pom.xml خود اضافه کنید:

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

آخرین بسته SDK را از صفحه دانلود رسمی دریافت کنید: Conholdate.Total for Java دانلود. این کتابخانه به Java 8 یا نسخه‌های جدیدتر نیاز دارد و بر روی هر JVM استانداردی اجرا می‌شود.

پیکربندی مجوز

یک لایسنس معتبر برای استفاده در تولید لازم است. می‌توانید یک لایسنس موقت برای تست از صفحه لایسنس موقت دریافت کنید. برای پروژه‌های بلندمدت، گزینه‌های قیمت‌گذاری را در صفحه قیمت‌گذاری بررسی کنید. پس از دریافت فایل لایسنس، همان‌طور که در مستندات توضیح داده شده است، آن را در کد راه‌اندازی برنامه خود (که در اینجا نشان داده نشده) تنظیم کنید.

نکات عملی برای تقسیم کارآمد اکسل

کار با کتاب‌های کاری بزرگ نیاز به مدیریت دقیق منابع دارد. توصیه‌های زیر به شما کمک می‌کند تا فرآیند را سریع و قابل اعتماد نگه دارید.

پیشنهادات مدیریت حافظه

  • از بین بردن هر کتاب‌کار موقت پس از ذخیره‌سازی برای آزادسازی منابع بومی و نگه داشتن مصرف حافظه در سطح پایین.
  • در صورت امکان، اشیاء را دوباره استفاده کنید - ایجاد یک نمونهٔ Workbook برای منبع و استفاده مجدد از همان شیء File برای پوشهٔ خروجی فشار جمع‌کننده زباله را کاهش می‌دهد.
  • در نظر گرفتن حالت استریمینگ اگر نسخهٔ Conholdate.Total شما از آن پشتیبانی می‌کند؛ استریمینگ ردیف‌ها را به‌صورت درخواست‑محور می‌خواند به‌جای بارگذاری کل کتاب‌کار در حافظه.

مشکلات رایج و نحوه اجتناب از آن‌ها

علائمدلیل محتملراه‌حل
java.lang.OutOfMemoryErrorنگهداری هر کتاب‌کار تقسیم‌شده در حافظهاطمینان حاصل کنید که splitWorkbook.dispose() داخل حلقه فراخوانی شود، همان‌طور که نشان داده شده است.
Illegal file name errorنام شیت شامل کاراکترهایی مانند `\ / : * ? " < >` است
Missing output filesمسیر پوشه خروجی نادرست است یا قابل نوشتن نیستبررسی کنید که outputDir به مکانی با دسترسی نوشتن اشاره دارد.

تقویت‌کننده‌های عملکرد

  • Log progress - چاپ نام شیت قبل از ذخیره‌سازی به شما کمک می‌کند تا نقطه شکست را در دسته‌های بزرگ شناسایی کنید.
  • Increase JVM heap - برای کتاب‌کارهای بسیار بزرگ، JVM را با -Xmx2g (یا بیشتر) راه‌اندازی کنید تا به فرآیند حافظه بیشتری بدهید.
  • Parallel processing - اگر کتاب‌کار به‌صورت بین‌وابسته نیست، می‌توانید کار را بین چندین رشته تقسیم کنید، اما به یاد داشته باشید که کتابخانه بومی زیرین همیشه ایمن برای استفاده همزمان نیست؛ به‌طور کامل تست کنید.

با دنبال کردن این نکات، می‌توانید به‌صورت کارآمد split Excel Workbook in Java را حتی زمانی که با هزاران شیت یا کتاب‌های کاری که حجم صدها مگابایت دارند، مدیریت کنید.

نتیجه‌گیری

تقسیم یک کتاب کار Excel به فایل‌های XLSX جداگانه با Conholdate.Total for Java یک تکنیک ساده اما قدرتمند برای توسعه‌دهندگان Java است که به دسترسی دقیق به داده‌های شیت‌ها نیاز دارند. کد ارائه‌شده جریان کامل کار را نشان می‌دهد، از بارگذاری کتاب کار منبع تا آزادسازی منابع پس از ذخیره هر شیت. استفاده از این رویکرد برای split Excel Workbook in Java به شما کنترل دقیق بر هر شیت را می‌دهد و به راحتی در خطوط پردازش داده‌های بزرگتر یکپارچه می‌شود. به‌خاطر داشته باشید که برای استفاده در محیط تولید یک لایسنس مناسب دریافت کنید؛ می‌توانید گزینه‌های قیمت‌گذاری را در pricing page بررسی کنید یا لایسنس موقت را از temporary license page درخواست کنید. با نصب SDK و اعمال توصیه‌های بهترین شیوه، آماده‌اید تا حتی پیچیده‌ترین سناریوهای Excel Split Java را مدیریت کنید.

سوالات متداول

چگونه می‌توانم کتاب کار Excel را در Java با استفاده از Conholdate.Total تقسیم کنم؟
از کلاس ExcelSplitter که در مثال کامل نشان داده شده است استفاده کنید. این کلاس کتاب کار منبع را بارگذاری می‌کند، بر روی هر برگه کاری تکرار می‌شود، برای هر برگه یک کتاب کار جدید ایجاد می‌کند و آن را به‌عنوان یک فایل XLSX جداگانه ذخیره می‌کند. این روش همچنین زمانی که نیاز به تقسیم فایل XLSX با استفاده از Java برای هر اندازه‌ای از کتاب کار دارید، کار می‌کند.

آیا SDK با تمام نسخه‌های Java سازگار است؟
SDK از Java 8 به بعد پشتیبانی می‌کند. اطمینان حاصل کنید که پروژه شما به یک JDK سازگار هدف‌گذاری شده است.

آیا قبل از اجرای کد باید یک لایسنس تنظیم کنم؟
یک لایسنس برای استقرارهای تولیدی مورد نیاز است. می‌توانید یک لایسنس موقت برای تست از صفحه لایسنس موقت دریافت کنید و قیمت‌گذاری کامل را در صفحه قیمت‌گذاری بررسی کنید.

اگر دفتر کار من حاوی هزاران برگه باشد؟
دفتر کار را به صورت دسته‌ای پردازش کنید، هر دفتر کار موقت را به‌سرعت حذف کنید و در صورت لزوم اندازهٔ heap JVM را افزایش دهید. ثبت نام هر برگه به شما کمک می‌کند تا به‌سرعت برگهٔ مشکل‌دار را شناسایی کنید.

بیشتر بخوانید