Jako vývojář .NET se musíte s objekty DataTable potýkat velmi často. Zejména, když potřebujete importovat nebo exportovat data z databází nebo souborů XML/JSON. Při programovém generování dokumentů může být nutné vložit data z objektů DataTable přímo do tabulky v dokumentech aplikace Word. Pro takové případy mi dovolte, abych vám poskytl dokonalé a nejjednodušší řešení pro vkládání dat z DataTable do dokumentu aplikace Word v C#.
- Knihovna C# pro vložení DataTable do dokumentu aplikace Word
- Kroky k vložení DataTable do dokumentu aplikace Word
- Vložte data z DataTable do Word DOC
Knihovna C# pro vložení DataTable do Wordu DOC – ke stažení zdarma
Pro import dat z objektů DataTable do dokumentů aplikace Word použijeme Aspose.Words for .NET. Je to knihovna bohatá na funkce, která vám umožní vytvářet a zpracovávat dokumenty MS Word. Můžete si stáhnout jeho DLL nebo nainstalovat z NuGet.
Stáhněte si DLL
Nainstalujte přes NuGet
PM> Install-Package Aspose.Words
C# Vložit DataTable do dokumentu aplikace Word - kroky
Následují kroky, které budeme dodržovat, abychom načetli data z DataTable a vložili je do dokumentu aplikace Word.
- Načtěte data z databáze nebo datového souboru do objektu DataTable.
- Vytvořte nový dokument aplikace Word a přidejte do něj novou tabulku.
- Procházejte řádky v DataTable a vložte každý řádek do tabulky aplikace Word.
A to je vše.
Pojďme se nyní podívat na to, jak převést tyto kroky do kódu C# a importovat DataTable do dokumentu Word.
Vložit data z DataTable do Word DOC v C#
Nejprve napíšeme metodu, která akceptuje DocumentBuilder pro sestavení dokumentu, DataTable s daty a další parametr pro povolení/zakázání importu záhlaví sloupců. Navíc vrátí objekt Table.
Následuje pracovní postup této metody.
- Vytvořte novou tabulku a získejte její odkaz do objektu Table.
- Vložte do tabulky sloupce podle sloupců v DataTable.
- Nastavte tloušťku písma, pokud je první řádek pro nadpisy.
- Projděte každý DataRow v kolekci DataTable.Rows.
- Pro každou hodnotu vložte novou buňku a podle toho nastavte datový typ.
- Vraťte objekt Table.
Následuje implementace metody pro import dat z DataTable do tabulky v dokumentu Word v C#.
///<summary>
/// Importuje obsah ze zadaného DataTable do nového objektu Aspose.Words Table.
/// Tabulka se vloží na aktuální pozici tvůrce dokumentů a použije formátování aktuálního tvůrce, pokud je nějaké definováno.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
Table table = builder.StartTable();
// Zkontrolujte, zda mají být v řádku záhlaví zahrnuty názvy sloupců ze zdroje dat.
if (importColumnHeadings)
{
// Před změnou uložte původní hodnoty těchto vlastností.
bool boldValue = builder.Font.Bold;
ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;
// Naformátujte řádek záhlaví s příslušnými vlastnostmi.
builder.Font.Bold = true;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
// Vytvořte nový řádek a vložte název každého sloupce do prvního řádku tabulky.
foreach (DataColumn column in dataTable.Columns)
{
builder.InsertCell();
builder.Writeln(column.ColumnName);
}
builder.EndRow();
// Obnovte původní formátování.
builder.Font.Bold = boldValue;
builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
}
foreach (DataRow dataRow in dataTable.Rows)
{
foreach (object item in dataRow.ItemArray)
{
// Pro každý objekt vložte novou buňku.
builder.InsertCell();
switch (item.GetType().Name)
{
case "DateTime":
// Definujte vlastní formát pro data a časy.
DateTime dateTime = (DateTime)item;
builder.Write(dateTime.ToString("MMMM d, yyyy"));
break;
default:
// Ve výchozím nastavení bude jakákoli jiná položka vložena jako text.
builder.Write(item.ToString());
break;
}
}
// Po vložení všech dat z aktuálního záznamu můžeme řádek tabulky ukončit.
builder.EndRow();
}
// Dokončili jsme vkládání všech dat z DataTable, můžeme tabulku ukončit.
builder.EndTable();
return table;
}
Nyní je čas zavolat tuto metodu a vložit DataTable do dokumentu aplikace Word.
Import DataTable do dokumentu Word v C#
Následují kroky k importu dat z DataTable do dokumentu aplikace Word v C#.
- Vytvořte nový dokument aplikace Word (nebo načtěte existující) pomocí třídy Document.
- Načíst data z databáze/souboru do objektu DataTable.
- Zavolejte metodu, kterou jsme napsali v předchozí části, a získejte vrácenou tabulku.
- Nastavte formátování tabulky.
- Uložte soubor aplikace Word pomocí metody Document.Save().
Následující ukázka kódu ukazuje, jak vložit DataTable do dokumentu aplikace Word v C#.
// Vytvořte nový dokument.
Document doc = new Document();
// Můžeme umístit, kam chceme tabulku vložit, a také zadat jakékoli další formátování
// aplikované i na stůl.
DocumentBuilder builder = new DocumentBuilder(doc);
// Chceme otočit na šířku stránky, jak očekáváme širokou tabulku.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;
DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");
// Získejte data z našeho zdroje dat, který je uložen jako DataTable.
DataTable dataTable = ds.Tables[0];
// Vytvořte tabulku v dokumentu z dat obsažených v DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);
// Můžeme použít styl tabulky jako velmi rychlý způsob, jak aplikovat formátování na celou tabulku.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;
// Pro naši tabulku chceme odstranit záhlaví sloupce obrázku.
table.FirstRow.LastCell.RemoveAllChildren();
// Uložte výstupní dokument.
doc.Save("Table.docx");
Knihovna C# DataTable to Word Importer – získejte bezplatnou licenci
Můžete získat bezplatnou dočasnou licenci k používání Aspose.Words pro .NET bez omezení hodnocení.
Závěr
V tomto článku jste se naučili, jak vložit data z DataTable do dokumentu aplikace Word v C#. Ukázku kódu můžete snadno integrovat do svých aplikací a importovat data přímo z databáze/XML/JSON do dokumentů aplikace Word pomocí DataTable.
.NET Word Library – Přečtěte si více
Můžete navštívit dokumentaci Aspose.Words for .NET a prozkoumat více o knihovně. V případě jakýchkoli dotazů nás neváhejte kontaktovat prostřednictvím našeho fóra.