ادغام سلول های جدول
گاهی اوقات ردیف های خاصی در یک جدول نیاز به یک عنوان یا بلوک های بزرگ متن دارند که عرض کامل جدول را اشغال می کنند. برای طراحی مناسب جدول، کاربر می تواند چندین سلول جدول را در یک ادغام کند. Aspose.Words از سلول های ادغام شده در هنگام کار با تمام فرمت های ورودی، از جمله وارد کردن محتوای HTML پشتیبانی می کند.
نحوه ادغام سلول های جدول
در Aspose.Words، سلول های ادغام شده با خواص زیر کلاس CellFormat نشان داده می شوند:
- HorizontalMerge که توضیح می دهد که آیا سلول بخشی از ادغام افقی سلول ها است
- VerticalMerge که توصیف می کند که آیا سلول بخشی از ادغام عمودی سلول ها است
مقادیر این خواص رفتار ادغام سلول ها را تعیین می کند:
- اولین سلول در یک دنباله از سلول های ادغام شده خواهد داشت CellMerge.First
- هر سلول ادغام شده بعدی CellMerge.Previousخواهد داشت
- سلولی که ادغام نشده باشد CellMerge.Noneخواهد داشت
بررسی اینکه آیا یک سلول ادغام شده است
برای بررسی اینکه آیا یک سلول بخشی از یک دنباله از سلول های ادغام شده است، ما به سادگی ویژگی های HorizontalMerge و VerticalMerge را بررسی می کنیم.
مثال کد زیر نشان می دهد که چگونه نوع ادغام سلول افقی و عمودی را چاپ کنیم:
ادغام سلول های جدول هنگام استفاده از DocumentBuilder
برای ادغام سلول ها در یک جدول ایجاد شده با DocumentBuilder، شما باید نوع ادغام مناسب را برای هر سلول که در آن ادغام انتظار می رود تنظیم کنید – ابتدا CellMerge.First و سپس CellMerge.Previous.
همچنین، باید به یاد داشته باشید که تنظیمات ادغام را برای سلول هایی که نیازی به ادغام ندارند پاک کنید – این کار را می توان با تنظیم اولین سلول غیر ادغام به CellMerge.None انجام داد. اگر این کار انجام نشود، تمام سلول های جدول با هم ادغام می شوند.
مثال کد زیر نشان می دهد که چگونه یک جدول با دو ردیف ایجاد کنیم که در آن سلول های ردیف اول به صورت افقی ادغام می شوند:
مثال کد زیر نشان می دهد که چگونه یک جدول دو ستون ایجاد کنیم که در آن سلول های ستون اول به طور عمودی ادغام می شوند:
سلول های جدول را در موارد دیگر ادغام کنید
در موقعیت های دیگر که DocumentBuilder استفاده نمی شود، مانند یک جدول موجود، ادغام سلول ها به روش قبلی ممکن است به همان اندازه آسان نباشد. در عوض، ما می توانیم عملیات اساسی مربوط به استفاده از خواص ادغام به سلول ها را به روشی که کار را بسیار آسان تر می کند، بسته بندی کنیم. این روش شبیه به روش اتوماسیون ادغام است که برای ادغام طیف وسیعی از سلول ها در یک جدول فراخوانده می شود.
کد زیر سلول های جدول را در محدوده مشخص شده ادغام می کند، از سلول داده شده شروع می شود و در سلول نهایی به پایان می رسد. در این حالت، محدوده می تواند چندین ردیف یا ستون را در بر بگیرد:
مثال کد زیر نشان می دهد که چگونه طیف وسیعی از سلول ها را بین دو سلول مشخص شده ادغام کنیم:
سلول های ادغام شده عمودی و افقی در جدول HTML
همانطور که در مقالات قبلی گفتیم، جدول در Microsoft Word مجموعه ای از ردیف های مستقل است. هر ردیف دارای مجموعه ای از سلول هایی است که مستقل از سلول های ردیف های دیگر هستند. بنابراین، در جدول Microsoft Word چیزی به نام “ستون” وجود ندارد و “ستون اول” چیزی شبیه “مجموعه سلول های اول هر ردیف در جدول"است. این به کاربران اجازه می دهد تا یک جدول داشته باشند که در آن، به عنوان مثال، ردیف اول از دو سلول – 2 سانتی متر و 1 سانتی متر تشکیل شده است و ردیف دوم از دو سلول مختلف – 1 سانتی متر و 2 سانتی متر عرض تشکیل شده است. و Aspose.Words از این مفهوم جداول پشتیبانی می کند.
یک جدول در HTML دارای ساختار اساسا متفاوت است: هر ردیف دارای تعداد سلول های یکسان است و (برای کار مهم است) هر سلول دارای عرض ستون مربوطه است، برای همه سلول ها در یک ستون یکسان است. بنابراین اگر HorizontalMerge و VerticalMerge یک مقدار نادرست را برگردانند، از مثال کد زیر استفاده کنید:
تبدیل به سلول های ادغام شده افقی
گاهی اوقات تشخیص اینکه کدام سلول ها ادغام می شوند امکان پذیر نیست زیرا برخی از نسخه های جدیدتر Microsoft Word دیگر از پرچم های ادغام استفاده نمی کنند وقتی سلول ها به صورت افقی ادغام می شوند. اما برای شرایطی که سلول ها با استفاده از پرچم های ادغام به صورت افقی با عرض خود به یک سلول ادغام می شوند، Aspose.Words روش ConvertToHorizontallyMergedCells
را برای تبدیل سلول ها فراهم می کند. این روش به سادگی جدول را تغییر می دهد و سلول های جدید را در صورت نیاز اضافه می کند.
مثال کد زیر روش بالا را در عمل نشان می دهد: