DocIO esencial
Biblioteca .NET capaz de leer y escribir archivos de Microsoft Word. Este componente es un modelo de objetos, similar a la biblioteca de clases COM de Microsoft Office. No utiliza interoperabilidad COM y está escrito en C#. Si Microsoft Word no está instalado en el sistema, puede considerar este componente.
Cree nuevos documentos de MS Word: admite la creación de documentos de MS Word que contienen texto, imágenes, gráficos, páginas y pies de página.
Formato de documentos: admite el formato en informes universales de MS Word.
La generación de documentos se basa en plantillas: para generar documentos basados en plantillas, puede usar la GUI de MS Word para diseñar informes de documentos y luego usar DocIO para completar dinámicamente los datos en los archivos de plantilla.
Propiedades del documento: lea y escriba la configuración de propiedades de los documentos de Word.
Conversión: admite la conversión de documentos de MS Word a PDF utilizando Essential PDF.
Funciones avanzadas: admite copiar y fusionar varios documentos de MS Word en un solo documento.
Convertir HTML a Word
byte estático público [] ConvertHtmlToDoc (cadena html)
{
var documento = nuevo WordDocument();
Sección IWSection = document.AddSection();
IWParagraph párrafo = sección.AddParagraph();
cadena errorMessage = "";
bool válido = sección.Body.IsValidXHTML(html, XHTMLValidationType.Strict, out errorMessage);
si (!válido)
lanzar nueva InvalidCastException(errorMessage + "<hr>" + html);
document.XHTMLValidateOption = XHTMLValidationType.Strict;
sección.Body.InsertXHTML(html);
var outMem = nuevo MemoryStream();
documento.Guardar(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
contenido var = nuevo byte[outMem.Length];
outMem.Read(contenido, 0, contenido.Longitud);
outMem.Dispose();
documento.Cerrar();
devolver contenido;
}
Reemplazar texto especificado al generar Word
/// <resumen>
/// Reemplazar el texto especificado al generar Word
/// </summary>
/// <param nombre="templatePath"></param>
/// <param nombre="NombreDeArchivo"></param>
/// <param nombre="replaysDictionary"></param>
public static void ReemplazarDocContent (cadena templateFileName, cadena newFileName,
Diccionario<cadena, cadena> replaysDictionary)
{
Documento IWordDocument = nuevo WordDocument();
documento.Open(templateFileName, FormatType.Doc);
foreach (var rd en el diccionario de repeticiones)
{
si (string.IsNullOrEmpty(document.GetText())) continúa;
documento.Reemplazar (rd.Clave, rd.Valor, falso, falso);
mientras (document.GetText().IndexOf(rd.Key)!= -1)
documento.Reemplazar (rd.Clave, rd.Valor, falso, falso);
}
document.Save(newFileName, FormatType.Doc);
}
Proteger documentos con contraseña
Stream público estático SetDocProtect (byte [] docContent, clave de cadena)
{
var mem = nuevo MemoryStream(docContent);
mem.Seek(0, SeekOrigin.Begin);
Documento IWordDocument = nuevo WordDocument(mem, FormatType.Automatic);
document.Protect(ProtectionType.AllowOnlyFormFields, clave);
var outMem = nuevo MemoryStream();
documento.Guardar(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
volver a salirMem;
}
Crear una tabla en la ubicación del marcador
IWTable estática pública Reemplazar tabla (documento WordDocument, cadena nombre de marcador, datos de tabla de datos, cadena mergeColName, lista <lista <cadena>> mutilTableCaption)
{
if (documento == null) lanza una nueva ArgumentNullException("documento");
if (bookmarkName == null) lanza una nueva ArgumentNullException("bookmarkName");
si (datos == nulo) lanza una nueva ArgumentNullException("datos");
si (data.Columns.Count < 1) lanza una nueva ArgumentNullException ("datos");
int captionCount = mutilTableCaption! = nulo && mutilTableCaption.Count > 0? mutilTableCaption.Count: 1;
tabla WTable = nueva WTable (documento, verdadero);
table.ResetCells(data.Rows.Count + captionCount, datos.Columns.Count);
para (var colCount = 0; colCount < captionCount; colCount++)
{
para (var col = 0; col < data.Columns.Count; col++)
{
var párrafo = table.Rows[colCount].Cells[col].AddParagraph();
var caption = datos.Columnas[col].ColumnName;
si (mutilTableCaption! = nulo && mutilTableCaption.Count > 0)
título = mutilTableCaption[colCount][col];
var texto = párrafo.AppendText(título);
parrafo.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Center;
text.CharacterFormat.FontName = "宋体";
text.CharacterFormat.Bold = falso;
texto.CharacterFormat.FontSize = 10.5f;
}
}
para (var fila = captionCount; fila <= datos.Rows.Count; fila++)
para (var col = 0; col < data.Columns.Count; col++)
{
var párrafo = tabla.Filas[fila].Celdas[col].AddParagraph();
var texto = párrafo.AppendText(data.Rows[fila - captionCount][col] + "");
text.CharacterFormat.FontName = "宋体";
texto.CharacterFormat.FontSize = 9f;
doble valor = 0;
si (doble.TryParse(texto.Texto, fuera val))
{
texto.Texto = Math.Round(val, 2) + "";
//alinear a la derecha
parrafo.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Right;
table.Rows[fila].Cells[col].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
table.Rows[fila].Cells[col].CellFormat.TextWrap = false;
}
}
//Fusionar celdas, fusionar hacia abajo
if (!string.IsNullOrEmpty(mergeColName))
para (var fila = captionCount; fila < tabla.Rows.Count; fila++)
{
var celda = tabla.Filas[fila].Celdas[datos.Columnas[mergeColName].Ordinal];
cell.CellFormat.VerticalMerge = CellMerge.Inicio;
var texto = datos.Rows[fila - captionCount][mergeColName] + "";
si (fila > captionCount)
{
var priorCell = table.Rows[fila - captionCount].Cells[data.Columns[mergeColName].Ordinal];
var findText = data.Rows[fila - captionCount - 1][mergeColName] + "";
si (texto.Equals(buscarTexto))
cell.CellFormat.VerticalMerge = CellMerge.Continue;
}
}
BookmarksNavigator bk = nuevo BookmarksNavigator(documento);
bk.MoveToBookmark(nombredelmarcador);
TextBodyPart cuerpo= bk.GetBookmarkContent();
bk.DeleteBookmarkContent (verdadero);
bk.InsertTable(tabla);
tabla de retorno;
}
-