Execute

Execute(IMailMergeDataSource)

Utför en e-postsammanfogning från en anpassad datakälla.

public void Execute(IMailMergeDataSource dataSource)
ParameterTypBeskrivning
dataSourceIMailMergeDataSourceEtt objekt som implementerar det anpassade gränssnittet för kopplingsdatakällan.

Anmärkningar

Använd den här metoden för att fylla sammankopplingsfält i dokumentet med värden from vilken datakälla som helst som en lista eller hashtabell eller objekt. Du måste skriva din egen klass som implementerarIMailMergeDataSource gränssnitt.

Du kan bara använda den här metoden närIsBidiTextSupportedOnUpdate ärfalsk, det vill säga att du inte behöver höger-till-vänster-språk (som arabiska eller hebreiska) kompatibilitet.

Denna metod ignorerarRemoveUnusedRegions alternativ.

Se även


Execute(string[], object[])

Utför en kopplingsoperation för en enskild post.

public void Execute(string[] fieldNames, object[] values)
ParameterTypBeskrivning
fieldNamesString[]Array av sammanslagningsfältnamn. Fältnamn är inte skiftlägeskänsliga. Om ett fältnamn som inte finns i dokumentet påträffas ignoreras det.
valuesObject[]Matris med värden som ska infogas i sammanslagningsfälten. Antalet element i denna matris måste vara detsamma som antalet element ifieldNames.

Anmärkningar

Använd den här metoden för att fylla sammankopplingsfält i dokumentet med värden from en array av objekt.

Denna metod slår samman data för endast en post. Matrisen av fältnamn och matrisen av värden representerar data för en enskild post.

Den här metoden använder inte kopplingsregioner.

Denna metod ignorerarRemoveUnusedRegions alternativ.

Exempel

Visar hur man slår samman en bild från en URI som e-postsammanfogningsdata till ett MERGEFIELD.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// MERGEFIELDs med "Image:"-taggar kommer att få en bild under en e-postsammanfogning.
// Strängen efter kolon i taggen "Image:" motsvarar ett kolumnnamn
// i datakällan vars celler innehåller URI:er av bildfiler.
builder.InsertField("MERGEFIELD  Image:logo_FromWeb ");
builder.InsertField("MERGEFIELD  Image:logo_FromFileSystem ");

 // Skapa en datakälla som innehåller URI:er av bilder som vi kommer att slå samman.
// En URI kan vara en webbadress som pekar på en bild, eller ett lokalt filsystems filnamn för en bildfil.
string[] columns = { "logo_FromWeb", "logo_FromFileSystem" };
object[] URIs = { ImageUrl, ImageDir + "Logo.jpg" };

// Kör en e-postsammanfogning på en datakälla med en rad.
doc.MailMerge.Execute(columns, URIs);

doc.Save(ArtifactsDir + "MailMergeEvent.ImageFromUrl.docx");

Visar hur man utför en sammanfogning och sedan sparar dokumentet i klientens webbläsare.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.InsertField(" MERGEFIELD FullName ");
builder.InsertParagraph();
builder.InsertField(" MERGEFIELD Company ");
builder.InsertParagraph();
builder.InsertField(" MERGEFIELD Address ");
builder.InsertParagraph();
builder.InsertField(" MERGEFIELD City ");

doc.MailMerge.Execute(new string[] { "FullName", "Company", "Address", "City" },
    new object[] { "James Bond", "MI5 Headquarters", "Milbank", "London" });

// Skicka dokumentet till klientens webbläsare.
Assert.That(() => doc.Save(response, "Artifacts/MailMerge.ExecuteArray.docx", ContentDisposition.Inline, null),
    Throws.TypeOf<ArgumentNullException>()); //Kastad eftersom HttpResponse är null i testet.

// Vi kommer att behöva stänga detta svar manuellt för att säkerställa att vi inte lägger till något överflödigt innehåll i dokumentet efter att ha sparats.
Assert.That(() => response.End(), Throws.TypeOf<NullReferenceException>());

Se även


Execute(DataTable)

Utför e-postkoppling från en datatabell till dokumentet.

public void Execute(DataTable table)
ParameterTypBeskrivning
tableDataTableTabell som innehåller data som ska infogas i kopplingsfält. Fältnamn är inte skiftlägeskänsliga. Om ett fältnamn som inte finns i dokumentet påträffas ignoreras det.

Anmärkningar

Använd den här metoden för att fylla sammanslagningsfält i dokumentet med värden från a Datatabell.

Alla poster från tabellen slås samman i dokumentet.

Du kan använda NÄSTA-fältet i Word-dokumentet för att orsakaMailMerge objekt för att välja nästa post frånDatatabell och fortsätt sammanfoga. Detta kan användas när du skapar dokument som adressetiketter.

NärMailMerge objektet når slutet av huvuddokumentet och det finns fortfarande fler rader iDatatabell, kopierar det hela innehållet i huvuddokumentet och lägger till det i slutet av måldokumentet med en section break som avgränsare.

Denna metod ignorerarRemoveUnusedRegions alternativ.

Exempel

Visar hur man kör en e-postsammanfogning med data från en datatabell.

public void ExecuteDataTable()
{
    DataTable table = new DataTable("Test");
    table.Columns.Add("CustomerName");
    table.Columns.Add("Address");
    table.Rows.Add(new object[] { "Thomas Hardy", "120 Hanover Sq., London" });
    table.Rows.Add(new object[] { "Paolo Accorti", "Via Monte Bianco 34, Torino" });

    // Nedan finns två sätt att använda en datatabell som datakälla för en e-postkoppling.
    // 1 - Använd hela tabellen för kopplingen för att skapa ett kopplingsdokument för varje rad i tabellen:
    Document doc = CreateSourceDocExecuteDataTable();

    doc.MailMerge.Execute(table);

    doc.Save(ArtifactsDir + "MailMerge.ExecuteDataTable.WholeTable.docx");

    // 2 - Använd en rad i tabellen för att skapa ett dokument för utmatning av dokument:
    doc = CreateSourceDocExecuteDataTable();

    doc.MailMerge.Execute(table.Rows[1]);

    doc.Save(ArtifactsDir + "MailMerge.ExecuteDataTable.OneRow.docx");
}

/// <summary>
/// Skapar ett källdokument för sammankoppling av brev.
/// </summary>
private static Document CreateSourceDocExecuteDataTable()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    builder.InsertField(" MERGEFIELD CustomerName ");
    builder.InsertParagraph();
    builder.InsertField(" MERGEFIELD Address ");

    return doc;
}

Se även


Execute(IDataReader)

Utför sammanslagning frånIDataReader in i dokumentet.

public void Execute(IDataReader dataReader)
ParameterTypBeskrivning
dataReaderIDataReaderDatakälla för sammankopplingsåtgärden.

Anmärkningar

Du kan passeraSqlDataReader ellerOleDbDataReader objekt till denna -metoden som en parameter eftersom de båda implementeradeIDataReader gränssnitt.

Observera att den här metoden inte använder kopplingsregioner och för flera poster kommer dokumentet att växa genom att hela dokumentet upprepas.

Denna metod ignorerarRemoveUnusedRegions alternativ.

Exempel

Visar hur man kör en sammankoppling av brev med data från en dataläsare.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.Write("Product:\t");
builder.InsertField(" MERGEFIELD ProductName");
builder.Write("\nSupplier:\t");
builder.InsertField(" MERGEFIELD CompanyName");
builder.Writeln();
builder.InsertField(" MERGEFIELD QuantityPerUnit");
builder.Write(" for $");
builder.InsertField(" MERGEFIELD UnitPrice");

// Skapa en anslutningssträng som pekar på databasfilen "Northwind".
// i vårt lokala filsystem, öppna en anslutning och ställ in en SQL-fråga.
string connectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source=" + DatabaseDir + "Northwind.accdb";
string query =
    @"SELECT Products.ProductName, Suppliers.CompanyName, Products.QuantityPerUnit, Products.UnitPrice
    FROM Products 
    INNER JOIN Suppliers 
    ON Products.SupplierID = Suppliers.SupplierID";

using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    // Skapa ett SQL-kommando som kommer att hämta data för vår sammanslagning.
    // Namnen på tabellens kolumner som denna SELECT-sats kommer att returnera
    // kommer att behöva motsvara sammanslagningsfälten vi placerade ovan.
    OleDbCommand command = new OleDbCommand(query, connection);
    command.CommandText = query;
    try
    {                    
        connection.Open();                 
        using (OleDbDataReader reader = command.ExecuteReader())
        {
            // Ta data från läsaren och använd den i kopplingen.
            doc.MailMerge.Execute(reader);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }                
}

doc.Save(ArtifactsDir + "MailMerge.ExecuteDataReader.docx");

Se även


Execute(DataView)

Utför sammanslagning från enDataView in i dokumentet.

public void Execute(DataView dataView)
ParameterTypBeskrivning
dataViewDataViewDatakälla för sammankopplingsåtgärden.

Anmärkningar

Den här metoden är användbar om du hämtar data till enDatatabell men då måste tillämpa ett filter eller sortera innan sammanslagningen.

Observera att den här metoden inte använder kopplingsregioner och för flera poster kommer dokumentet att växa genom att hela dokumentet upprepas.

Denna metod ignorerarRemoveUnusedRegions alternativ.

Exempel

Visar hur man redigerar sammanslagningsdata med en DataView.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Write("Congratulations ");
builder.InsertField(" MERGEFIELD Name");
builder.Write(" for passing with a grade of ");
builder.InsertField(" MERGEFIELD Grade");

// Skapa en datatabell som vår sammanslagning kommer att hämta data från.
DataTable table = new DataTable("ExamResults");
table.Columns.Add("Name");
table.Columns.Add("Grade");
table.Rows.Add(new object[] { "John Doe", "67" });
table.Rows.Add(new object[] { "Jane Doe", "81" });
table.Rows.Add(new object[] { "John Cardholder", "47" });
table.Rows.Add(new object[] { "Joe Bloggs", "75" });

// Vi kan använda en datavy för att ändra kopplingsdata utan att göra ändringar i själva datatabellen.
DataView view = new DataView(table);
view.Sort = "Grade DESC";
view.RowFilter = "Grade >= 50";

// Vår datavy sorterar posterna i fallande ordning längs kolumnen "Betyg".
// och filtrerar bort rader med värden mindre än 50 i den kolumnen.
// Tre av de fyra raderna passar dessa kriterier så att utdatadokumentet kommer att innehålla tre sammanslagningsdokument.
doc.MailMerge.Execute(view);

doc.Save(ArtifactsDir + "MailMerge.ExecuteDataView.docx");

Se även


Execute(DataRow)

Utför sammanslagning från enDataRow in i dokumentet.

public void Execute(DataRow row)
ParameterTypBeskrivning
rowDataRowRad som innehåller data som ska infogas i kopplingsfält. Fältnamn är inte skiftlägeskänsliga. Om ett fältnamn som inte finns i dokumentet påträffas ignoreras det.

Anmärkningar

Använd den här metoden för att fylla sammankopplingsfält i dokumentet med värden från aDataRow.

Denna metod ignorerarRemoveUnusedRegions alternativ.

Exempel

Visar hur man kör en e-postsammanfogning med data från en datatabell.

public void ExecuteDataTable()
{
    DataTable table = new DataTable("Test");
    table.Columns.Add("CustomerName");
    table.Columns.Add("Address");
    table.Rows.Add(new object[] { "Thomas Hardy", "120 Hanover Sq., London" });
    table.Rows.Add(new object[] { "Paolo Accorti", "Via Monte Bianco 34, Torino" });

    // Nedan finns två sätt att använda en datatabell som datakälla för en e-postkoppling.
    // 1 - Använd hela tabellen för kopplingen för att skapa ett kopplingsdokument för varje rad i tabellen:
    Document doc = CreateSourceDocExecuteDataTable();

    doc.MailMerge.Execute(table);

    doc.Save(ArtifactsDir + "MailMerge.ExecuteDataTable.WholeTable.docx");

    // 2 - Använd en rad i tabellen för att skapa ett dokument för utmatning av dokument:
    doc = CreateSourceDocExecuteDataTable();

    doc.MailMerge.Execute(table.Rows[1]);

    doc.Save(ArtifactsDir + "MailMerge.ExecuteDataTable.OneRow.docx");
}

/// <summary>
/// Skapar ett källdokument för sammankoppling av brev.
/// </summary>
private static Document CreateSourceDocExecuteDataTable()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    builder.InsertField(" MERGEFIELD CustomerName ");
    builder.InsertParagraph();
    builder.InsertField(" MERGEFIELD Address ");

    return doc;
}

Se även