Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

129
Vistas
Rellenar un documento de Word con texto en árabe/inglés de la base de datos con DocumentFormat.OpenXml

Estoy llenando un documento de Word usando DocumentFormat.OpenXml en .Net Core 5.0, el texto proviene de una base de datos, en algún momento el texto incluye texto en árabe con pocas palabras en inglés, las palabras no aparecen en el orden correcto, por ejemplo si esto es un texto árabe y el segundo trabajo es inglés "uno DOS tres" aparecerá en un documento de Word como este "tres DOS uno", si copio el mismo texto de la base de datos y lo pego en Word aparecerá en el orden correcto .

Creo que Word está dividiendo el texto que estoy pegando en diferentes ejecuciones y las coloca en el orden correcto, pero en mi código estoy colocando el texto completo en una sola ejecución, ¿hay alguna manera de procesar esto automáticamente con OpenXML o tengo que hacerlo? hacerlo manualmente?

aquí está mi código:

 int rowNo = 2; foreach (DataLine line in data.Lines) { TableRow row = table.Elements<TableRow>().ElementAt(rowNo++); Paragraph p1 = row.Elements<TableCell>().ElementAt(0).Elements<Paragraph>().First(); Run r1 = new(); Text t1 = new(line.AmountString); r1.AddChild(t1); p1.AddChild(r1); Paragraph p2 = row.Elements<TableCell>().ElementAt(1).Elements<Paragraph>().First(); Run r2 = new(); Text t2 = new(line.Description); r2.AddChild(t2); p2.AddChild(r2); ParagraphProperties pp = p2.ChildElements.First<ParagraphProperties>(); BiDi bidi = new BiDi(); pp.TextDirection = new TextDirection() { Val = TextDirectionValues.TopToBottomRightToLeft }; pp.Append(bidi); }

Las últimas 4 líneas no hacen ninguna diferencia.

Tenga en cuenta que el documento de trabajo está bien formateado con la dirección del texto y las fuentes correctas.

Saludos

Amén

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Resultó que es posible poner texto RTL y LTR en una sola Ejecución, las siguientes RunPropoetries me funcionaron:

 run.RunProperties = new RunProperties { RunFonts = new RunFonts { ComplexScript = "Calibri" }, RightToLeftText = new RightToLeftText(), Languages = new Languages() { Bidi = new StringValue("ar-IQ"), Val = new StringValue("en-US") } };

Extraje los valores de un documento de Word creado en MS Word, pero allí el párrafo estaba separado en 3 Ejecuciones.

El crédito es para (amiry jd) que tuvo el mismo problema hace 5 años, consulte esta publicación

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda