DocIO essentiel
Bibliothèque .NET capable de lire et d'écrire des fichiers Microsoft Word. Ce composant est un modèle objet, similaire à la bibliothèque de classes Microsoft Office COM. Il n'utilise pas l'interopérabilité COM et est écrit en C#. Si Microsoft Word n'est pas installé sur le système, vous pouvez envisager ce composant.
Créer de nouveaux documents MS Word : prend en charge la création de documents MS Word contenant du texte, des images, des graphiques, des pages et des pieds de page.
Formatage du document : prend en charge le formatage dans des rapports MS Word universels.
La génération de documents est basée sur des modèles : pour générer des documents basés sur des modèles, vous pouvez utiliser l'interface graphique MS Word pour concevoir des rapports de documents, puis utiliser DocIO pour remplir dynamiquement des données dans les fichiers modèles.
Propriétés du document : lisez et écrivez les paramètres de propriétés des documents Word.
Conversion : prend en charge la conversion de documents MS Word en PDF à l'aide d'Essential PDF.
Fonctionnalités avancées : prend en charge la copie et la fusion de plusieurs documents MS Word en un seul document.
Convertir HTML en Word
octet statique public [] ConvertHtmlToDoc (chaîne html)
{
var document = new WordDocument();
Section IWSection = document.AddSection();
IWParagraph para = section.AddParagraph();
chaîne message d'erreur = "" ;
bool valid = section.Body.IsValidXHTML(html, XHTMLValidationType.Strict, out errorMessage);
si (!valide)
lancer une nouvelle InvalidCastException (errorMessage + "<hr>" + html);
document.XHTMLValidateOption = XHTMLValidationType.Strict ;
section.Body.InsertXHTML(html);
var outMem = new MemoryStream();
document.Save(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
var content = nouvel octet[outMem.Length];
outMem.Read(content, 0, content.Length);
outMem.Dispose();
document.Close();
renvoyer du contenu ;
}
Remplacer le texte spécifié lors de la génération de Word
/// <résumé>
/// Remplace le texte spécifié lors de la génération de Word
/// </summary>
/// <param name="templatePath"></param>
/// <param name="FileName"></param>
/// <param name="replaysDictionary"></param>
public static void ReplaceDocContent (string templateFileName, string newFileName,
Dictionnaire<string, string> replaysDictionary)
{
Document IWordDocument = new WordDocument();
document.Open(templateFileName, FormatType.Doc);
foreach (var rd dans replaysDictionary)
{
if (string.IsNullOrEmpty(document.GetText())) continue ;
document.Replace(rd.Key, rd.Value, false, false);
while (document.GetText().IndexOf(rd.Key) != -1)
document.Replace(rd.Key, rd.Value, false, false);
}
document.Save(newFileName, FormatType.Doc);
}
Protéger les documents par mot de passe
public static Stream SetDocProtect (byte[] docContent, clé de chaîne)
{
var mem = nouveau MemoryStream(docContent);
mem.Seek(0, SeekOrigin.Begin);
Document IWordDocument = new WordDocument (mem, FormatType.Automatic);
document.Protect(ProtectionType.AllowOnlyFormFields, clé);
var outMem = new MemoryStream();
document.Save(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
retourner outMem ;
}
Créer un tableau à l'emplacement du signet
public statique IWTable ReplaceTable (document WordDocument, chaîne bookmarkName, données DataTable, chaîne mergeColName, List<List<string>> mutilTableCaption)
{
if (document == null) throw new ArgumentNullException("document");
if (bookmarkName == null) throw new ArgumentNullException("bookmarkName");
if (data == null) throw new ArgumentNullException("data");
if (data.Columns.Count < 1) throw new ArgumentNullException("data");
int captionCount = mutilTableCaption != null && mutilTableCaption.Count > 0 mutilTableCaption.Count : 1;
Table WTable = new WTable(document, true);
table.ResetCells(data.Rows.Count + captionCount, data.Columns.Count);
pour (var colCount = 0 ; colCount < captionCount ; colCount++)
{
pour (var col = 0; col < data.Columns.Count; col++)
{
var paragraphe = table.Rows[colCount].Cells[col].AddParagraph();
var caption = data.Columns[col].ColumnName;
si (mutilTableCaption != null && mutilTableCaption.Count > 0)
légende = mutilTableCaption[colCount][col];
var text = paragraphe.AppendText(caption);
paragraphe.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Center;
text.CharacterFormat.FontName = "宋体";
text.CharacterFormat.Bold = false;
texte.CharacterFormat.FontSize = 10,5f;
}
}
pour (var ligne = captionCount; ligne <= data.Rows.Count; ligne++)
pour (var col = 0; col < data.Columns.Count; col++)
{
var paragraphe = table.Rows[row].Cells[col].AddParagraph();
var text = paragraphe.AppendText(data.Rows[row - captionCount][col] + "");
text.CharacterFormat.FontName = "宋体";
texte.CharacterFormat.FontSize = 9f;
double valeur = 0 ;
if (double.TryParse(text.Text, out val))
{
texte.Texte = Math.Round(val, 2) + "";
//aligner à droite
paragraphe.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Right;
table.Rows[row].Cells[col].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
table.Rows[row].Cells[col].CellFormat.TextWrap = false;
}
}
//Fusionner les cellules, fusionner vers le bas
si (!string.IsNullOrEmpty(mergeColName))
pour (var ligne = captionCount; ligne < table.Rows.Count; ligne++)
{
var cell = table.Rows[row].Cells[data.Columns[mergeColName].Ordinal];
cell.CellFormat.VerticalMerge = CellMerge.Start;
var text = data.Rows[row - captionCount][mergeColName] + "";
si (ligne > captionCount)
{
var priorCell = table.Rows[row - captionCount].Cells[data.Columns[mergeColName].Ordinal];
var findText = data.Rows[row - captionCount - 1][mergeColName] + "";
if (text.Equals(findText))
cell.CellFormat.VerticalMerge = CellMerge.Continue;
}
}
BookmarksNavigator bk = new BookmarksNavigator(document);
bk.MoveToBookmark(bookmarkName);
TextBodyPart body= bk.GetBookmarkContent();
bk.DeleteBookmarkContent(true);
bk.InsertTable(table);
table de retour ;
}
-