Domanda

Ho un DataTable con 3 colonne (a, b, c) e un file docx con i campi MailMerge corrispondenti impostati. Quello che mi piacerebbe fare è eseguire una stampa unione sul documento con i dati.

presumere che si può scrivere sul disco rigido (se avete bisogno di creare un'etc CSV per fare il merge, ecc), è non avere Word, Excel, ecc, SDK aperto XML è installato, ma altrettanto si può installare qualsiasi altra cosa.

In termini di risposta, convertendo i dati di ingresso per tutto ciò che è necessario in realtà non è un problema, il problema è come per eseguire una stampa unione in SDK Open XML (o altro API GRATIS ).

Come nota a margine, l'uscita dovrebbe essere un file con le pagine n (dove n è il numero di righe nei dati), ossia non n documenti (anche se non mi importa se l'unione di documenti viene fatto al fine).

(devo aggiungere, io non sono legato al concetto MailMerge, essendo in grado di fare solo una sostituzione per esempio avrebbe funzionato - anche se, ovviamente, che richiede quindi la fusione i file insieme alla fine ...)

È stato utile?

Soluzione

Ho questo lavoro in modo abbastanza orribile - in pratica - in questo momento, l'algoritmo segue questa:

  1. file docx Unzip
  2. Leggi in document.xml (una stringa)
  3. String.Replace i campi
  4. Rezip a docx temporanei
  5. unire tutti i documenti temporanei creati

Il codice effettivo per la fusione dei documenti viene dal blog di Eric White: http://blogs.msdn.com/ericwhite/archive/2009/02/05/move-insert- eliminare-paragrafi-a-word-processing-documenti-con-il-open-xml-sdk.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top