سلام و وقت
این اولین پست من تویه وبلاگ هستش و سعی می کنم براتون آموزش ها و چیزهایی که خودم استفاده کردم و حس می کنم که به درد شما هم می خوره را قرار میدم.
امیدوار که مفید باشه.
در اولین پست می خوام نحوه خروجی گرفتن از یک لیست تو در تو یا به اصطلاح nested model را قرار بدم.
البته برای اینکه بتونید خروجی رو به صورت کامل ببینید می تونید سروس کد رو از لینک ببینید.
اگه هم خواستید با لایسنس کاملا آزاد منتشر کنید.
مسیر تست هم در شاخه com.test و کلاس TestReportCreatorTest هستش و با اجرای اون 2 تا فایل ایجاد میشه که شامل خروجی های CSV و ELSX میشه.
خروجی های دیگه رو می تونید به دلخواه خودتون و با تغییر در خروجی از برنامه بگیرید.
مدل ورودی ما به اسم ColumnModelDetails هستش که در واقع یک لیست از کلاس ColumnModelDetails هستش و شامل تیتر و متغییر و مسیر اون میشه و اینکه نوع متغییر از انواع ساده هستش یا اینکه یک لیست یا زیر مجموعه های دیگه ای از کلاس هستش.. و اینکه آیا می خواید ستونها قابلیت مرج شدن و سورت شدن داشته باشند یا خیر. یک فیلد ایندکس هم داره که به صورت پیش فرض مقدار -1 باید وارد بشه و کاربر نباید واردش کنه، چون برنامه به خطا می خوره.
و نمونه تکمیل شده هم در خود پروژه وجود داره.
حالا بخوام توضیحات کلی پروژه رو بدم به چند دسته تقسیم می کنم.
۱- دریافت لیست داده ها، مدل و نحوه خروجی که با لیستی از کلاس ColumnModelDetails قابل مشاهده هستش. (در خط 24 از کلاس تست)
۲- دریافت خروجی اکسل که در به دو قسمت تبدیل میشه. قسمت اول خروجی اکسل و قسمت دوم خروجی CSV که نحوه دریافت این خروجی ها در خطوط 31 و 49 قابل مشاهده هستش.
خوب توضیح خاصی باقی نمی مونه ولی چندتا نکته وجود داره:
نکته 1: خروجی برنامه قبل از تبدیل به فایل به صورت لیستی از رشته ها هستش که از طریق متغییر columnsExport در کلاس com.emreh.creator.CreateSimpleReport قابل مشاهده هستش.
نکته 2: برنامه برای تبدیل مدل ورودی به خروجی (لیستی از رشته ها) از جاوا رفلکشن یا Java Reflection استفاده می کنه.
نکته 3: برای به فایل هم از برنامه Apache POI استفاده میشه.
خوب اگه مشکلی بود هم می تونید بگید یا اگه ویژگی خاصی مد نظرتون بود که بنظرتون خوبه که تویه برنامه بذارم هم بگید تا بذارمش.
ممنون از توجهتون و اینکه اگه پیشنهاد یا انتقادی دارید بگید.
باتشکر از همه شماها