ادغام سلول های جدول

گاهی اوقات ردیف های خاصی در یک جدول نیاز به یک عنوان یا بلوک های بزرگ متن دارند که عرض کامل جدول را اشغال می کنند. برای طراحی مناسب جدول، کاربر می تواند چندین سلول جدول را در یک ادغام کند. Aspose.Words از سلول های ادغام شده در هنگام کار با تمام فرمت های ورودی، از جمله وارد کردن محتوای HTML پشتیبانی می کند.

نحوه ادغام سلول های جدول

در Aspose.Words، سلول های ادغام شده با خواص زیر کلاس CellFormat نشان داده می شوند:

  • HorizontalMerge که توضیح می دهد که آیا سلول بخشی از ادغام افقی سلول ها است
  • VerticalMerge که توصیف می کند که آیا سلول بخشی از ادغام عمودی سلول ها است

مقادیر این خواص رفتار ادغام سلول ها را تعیین می کند:

  • اولین سلول در یک دنباله از سلول های ادغام شده خواهد داشت CellMerge.First
  • هر سلول ادغام شده بعدی CellMerge.Previousخواهد داشت
  • سلولی که ادغام نشده باشد CellMerge.Noneخواهد داشت

بررسی کنید که آیا سلول ادغام شده است

برای بررسی اینکه آیا یک سلول بخشی از یک دنباله از سلول های ادغام شده است، ما به سادگی ویژگی های HorizontalMerge و VerticalMerge را بررسی می کنیم.

مثال کد زیر نشان می دهد که چگونه نوع ادغام سلول افقی و عمودی را چاپ کنیم:

سلول های ادغام شده در یک جدول

برای ادغام سلول ها در یک جدول ایجاد شده با DocumentBuilder، شما باید نوع ادغام مناسب را برای هر سلول که در آن ادغام انتظار می رود تنظیم کنید – ابتدا CellMerge.First و سپس CellMerge.Previous.

همچنین، باید به یاد داشته باشید که تنظیمات ادغام را برای سلول هایی که نیازی به ادغام ندارند پاک کنید – این کار را می توان با تنظیم اولین سلول غیر ادغام به CellMerge.None انجام داد. اگر این کار انجام نشود، تمام سلول های جدول با هم ادغام می شوند.

مثال کد زیر نشان می دهد که چگونه یک جدول با دو ردیف ایجاد کنیم که در آن سلول های ردیف اول به صورت افقی ادغام می شوند:

مثال کد زیر نشان می دهد که چگونه یک جدول دو ستون ایجاد کنیم که در آن سلول های ستون اول به طور عمودی ادغام می شوند:

سلول های جدول را در موارد دیگر ادغام کنید

در موقعیت های دیگر که DocumentBuilder استفاده نمی شود، مانند یک جدول موجود، ادغام سلول ها به روش قبلی ممکن است به همان اندازه آسان نباشد. در عوض، ما می توانیم عملیات اساسی مربوط به استفاده از خواص ادغام به سلول ها را به روشی که کار را بسیار آسان تر می کند، بسته بندی کنیم. این روش شبیه به روش اتوماسیون ادغام است که برای ادغام طیف وسیعی از سلول ها در یک جدول فراخوانده می شود.

کد زیر سلول های جدول را در محدوده مشخص شده ادغام می کند، از سلول داده شده شروع می شود و در سلول نهایی به پایان می رسد. در این حالت، محدوده می تواند چندین ردیف یا ستون را در بر بگیرد:

مثال کد زیر نشان می دهد که چگونه طیف وسیعی از سلول ها را بین دو سلول مشخص شده ادغام کنیم:

بسته به نسخه چارچوبی که استفاده می کنید، ممکن است بخواهید این روش را با تبدیل آن به یک روش تمدید اصلاح کنید. در این حالت، می توانید این روش را مستقیما روی یک سلول فراخوانی کنید تا طیف وسیعی از سلول ها مانند cell1.Merge(cell2) را ادغام کنید.

سلول های ادغام شده عمودی و افقی در یک جدول

همانطور که در مقالات قبلی گفتیم، جدول در Microsoft Word مجموعه ای از ردیف های مستقل است. هر ردیف دارای مجموعه ای از سلول هایی است که مستقل از سلول های ردیف های دیگر هستند. بنابراین، در جدول Microsoft Word چیزی به نام “ستون” وجود ندارد و “ستون1st” چیزی شبیه “مجموعه سلول های 1st هر ردیف در جدول"است. این به کاربران اجازه می دهد تا یک جدول داشته باشند که در آن، به عنوان مثال، ردیف 1st از دو سلول تشکیل شده است – 2سانتی متر و 1سانتی متر، و ردیف 2nd از دو سلول مختلف تشکیل شده است – 1سانتی متر و 2سانتی متر عرض. و Aspose.Words از این مفهوم جداول پشتیبانی می کند.

یک جدول در HTML دارای ساختار اساسا متفاوت است: هر ردیف دارای تعداد سلول های یکسان است و (برای کار مهم است) هر سلول دارای عرض ستون مربوطه است، برای همه سلول ها در یک ستون یکسان است. بنابراین اگر HorizontalMerge و VerticalMerge یک مقدار نادرست را برگردانند، از مثال کد زیر استفاده کنید:

تبدیل به سلول های ادغام شده افقی

گاهی اوقات تشخیص اینکه کدام سلول ها ادغام می شوند امکان پذیر نیست زیرا برخی از نسخه های جدیدتر Microsoft Word دیگر از پرچم های ادغام استفاده نمی کنند وقتی سلول ها به صورت افقی ادغام می شوند. اما برای شرایطی که سلول ها با استفاده از پرچم های ادغام به صورت افقی با عرض خود به یک سلول ادغام می شوند، Aspose.Words روش ConvertToHorizontallyMergedCells را برای تبدیل سلول ها فراهم می کند. این روش به سادگی جدول را تغییر می دهد و سلول های جدید را در صورت نیاز اضافه می کند.

مثال کد زیر روش بالا را در عمل نشان می دهد: