درج DataTable در سند Word در سی شارپ

به عنوان یک توسعه دهنده دات نت، باید اغلب با اشیاء DataTable سر و کار داشته باشید. به خصوص، زمانی که نیاز به واردات یا صادرات داده ها از پایگاه داده یا فایل های XML/JSON دارید. هنگام تولید اسناد به صورت برنامه‌ریزی، ممکن است لازم باشد داده‌ها را از اشیاء DataTable مستقیماً در جدول در اسناد Word وارد کنید. برای چنین مواردی، اجازه دهید بهترین و ساده ترین راه حل را برای درج داده ها از DataTable در یک سند Word در سی شارپ به شما ارائه دهم.

کتابخانه سی شارپ برای درج DataTable در Word DOC - دانلود رایگان

برای وارد کردن داده ها از اشیاء DataTable به اسناد Word، از Aspose.Words for .NET استفاده می کنیم. این یک کتابخانه غنی از امکانات است که به شما امکان می دهد اسناد MS Word را ایجاد و پردازش کنید. می توانید DLL آن را دانلود کنید یا از NuGet نصب کنید.

DLL را دانلود کنید

از طریق NuGet نصب کنید

PM> Install-Package Aspose.Words

سی شارپ DataTable را در سند Word وارد کنید - مراحل

مراحل زیر برای بازیابی داده ها از DataTable و درج آن در سند Word است.

  • داده ها را از یک پایگاه داده یا یک فایل داده در شی DataTable بارگیری کنید.
  • یک سند Word جدید ایجاد کنید و یک جدول جدید به آن اضافه کنید.
  • از میان سطرها در DataTable حلقه بزنید و هر سطر را در جدول Word وارد کنید.

و بس.

حال بیایید نگاهی به نحوه تبدیل این مراحل به کد C# و وارد کردن DataTable به سند Word داشته باشیم.

درج داده ها از DataTable در Word DOC در سی شارپ

ابتدا، ما متدی می نویسیم که DocumentBuilder را برای ساخت سند، DataTable دارای داده، و یک پارامتر اضافی برای فعال/غیرفعال کردن وارد کردن سرفصل های ستون می پذیرد. علاوه بر این، شی Table را برمی گرداند.

در ادامه روند کار این روش آورده شده است.

  • یک جدول جدید ایجاد کنید و مرجع آن را در یک شیء جدول وارد کنید.
  • ستون‌ها را مطابق ستون‌های DataTable در جدول وارد کنید.
  • اگر ردیف اول مربوط به عنوان است، وزن قلم را تنظیم کنید.
  • از میان هر DataRow در مجموعه DataTable.Rows حلقه بزنید.
  • یک سلول جدید برای هر مقدار وارد کنید و نوع داده را بر اساس آن تنظیم کنید.
  • شی Table را برگردانید.

در زیر پیاده سازی روش وارد کردن داده ها از DataTable به جدول در سند Word در سی شارپ است.

///<summary>
/// محتوا را از DataTable مشخص شده به یک شیء جدید Aspose.Words Table وارد می کند. 
/// جدول در موقعیت فعلی سازنده سند و با استفاده از قالب بندی سازنده فعلی در صورت وجود تعریف شده درج می شود.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // بررسی کنید که آیا نام ستون‌های منبع داده در ردیف سرصفحه قرار می‌گیرد یا خیر.
    if (importColumnHeadings)
    {
        // مقادیر اصلی این ویژگی ها را قبل از تغییر ذخیره کنید.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // ردیف عنوان را با ویژگی های مناسب قالب بندی کنید.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // یک ردیف جدید ایجاد کنید و نام هر ستون را در ردیف اول جدول قرار دهید.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // قالب بندی اصلی را بازیابی کنید.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // برای هر شی یک سلول جدید وارد کنید.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // یک قالب سفارشی برای تاریخ و زمان تعریف کنید.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // به طور پیش فرض هر مورد دیگری به عنوان متن درج می شود.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // پس از وارد کردن تمام داده ها از رکورد فعلی، می توانیم ردیف جدول را پایان دهیم.
        builder.EndRow();
    }

    // ما وارد کردن تمام داده ها از DataTable را به پایان رساندیم، می توانیم جدول را پایان دهیم.
    builder.EndTable();

    return table;
}

اکنون زمان فراخوانی این متد و قرار دادن DataTable در سند Word فرا رسیده است.

وارد کردن DataTable به سند Word در سی شارپ

مراحل زیر برای وارد کردن داده ها از DataTable به سند Word در سی شارپ است.

  • با استفاده از کلاس Document یک سند Word جدید ایجاد کنید (یا یک سند موجود را بارگیری کنید).
  • خواندن داده ها از پایگاه داده/فایل در شی DataTable.
  • متدی را که در قسمت قبل نوشته ایم فراخوانی کرده و جدول برگشتی را دریافت کنید.
  • تنظیم قالب بندی جدول
  • فایل Word را با استفاده از روش Document.Save() ذخیره کنید.

نمونه کد زیر نحوه درج DataTable را در سند Word در سی شارپ نشان می دهد.

// یک سند جدید ایجاد کنید.
Document doc = new Document();

// می‌توانیم جایی را که می‌خواهیم جدول درج شود، قرار دهیم و همچنین هر قالب اضافی را مشخص کنیم
// روی میز نیز اعمال شود.
DocumentBuilder builder = new DocumentBuilder(doc);

// ما می خواهیم افقی صفحه را همانطور که انتظار یک جدول گسترده را داریم بچرخانیم.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");

// داده ها را از منبع داده ما که به عنوان DataTable ذخیره می شود، بازیابی کنید.
DataTable dataTable = ds.Tables[0];

// از داده های موجود در DataTable یک جدول در سند بسازید.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// ما می توانیم یک سبک جدول را به عنوان یک روش بسیار سریع برای اعمال قالب بندی در کل جدول اعمال کنیم.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// برای جدول ما می خواهیم عنوان ستون تصویر را حذف کنیم.
table.FirstRow.LastCell.RemoveAllChildren();

// سند خروجی را ذخیره کنید.
doc.Save("Table.docx");

C# DataTable to Word Importer Library - مجوز رایگان دریافت کنید

می توانید برای استفاده از Aspose.Words برای دات نت بدون محدودیت ارزیابی، مجوز موقت رایگان دریافت کنید.

نتیجه

در این مقاله یاد گرفتید که چگونه داده ها را از DataTable در یک سند Word در سی شارپ وارد کنید. می توانید به راحتی نمونه کد را در برنامه های خود ادغام کنید و داده ها را مستقیماً از پایگاه داده/XML/JSON به اسناد Word با استفاده از DataTable وارد کنید.

کتابخانه ورد دات نت - بیشتر بخوانید

برای بررسی بیشتر در مورد کتابخانه می توانید از اسناد Aspose.Words for .NET دیدن کنید. در صورت داشتن هرگونه سوال، از طریق [تالار گفتمان8 ما را در جریان بگذارید.

همچنین ببینید