Estoy cansado de repetir siempre lo mismo. Trata de elaborar una pregunta correctamente proporcionando los detalles más importantes por delante. Has preguntado como insertar caracteres en una fecha, no se sabía si te referías a un string tal que: "01-01-2001" o por lo contrario a formatear un objeto de tipo
DateTime mediante los formatos de fecha disponibles (
https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings ), y ahora resulta que tu pregunta en realidad tiene que ver con las APIs de interoperabilidad de Excel y la propiedad
NumberFormat...
Aquí tienes la documentación oficial:
pero al introducir variable sexo, la fecha aparece asi: nacido a 1995-06-09
xlhoja.cells(fila, 2).value = sexo_text & fecha_nacimiento
xlhoja.cells(fila, 2).NumberFormat = " \a d \d\e MMMM \d\e yyyy"
¿algún consejo?
Bueno, yo no utilizo la API oficial de Microsoft Office, pero a simple vista no puedes esperar que la cadena de texto "nacida" o "nacido" se pueda evaluar y formatear como un formato de fecha. Prueba a escapar el string de la siguiente manera: "\n\a\c\i\d\a \e\l d \d\e MMMM \d\e yyyy", lo que en teoría debería traducirse a: "nacida el DÍA de MES de AÑO"
Tampoco sé si la propiedad
NumberFormat de ese objeto COM de Excel soporta los formatos de fecha
built-in de .NET Framework, habría que investigarlo, y como ya digo yo no uso la API oficial de Microsoft. Si eso no te funciona, pues puedes probar a introducir la fecha YA FORMATEADA (en mi otro post aquí arriba publiqué un ejemplo de como localizar a Español y formatear un objeto de tipo
DateTime), en lugar de usar la propiedad
NumberFormat para dejar que la formatee Excel.
PD:
Y aquí:
xlhoja.cells(fila, 2).value = fecha_nacimiento
xlhoja.cells(fila, 2).value = sexo_text & fecha_nacimiento
No has mostrado la declaración de
fecha_nacimiento para que podamos saber si se trata de un objeto de tipo DateTime, o por lo contrario de tipo String. No somos adivinos.
Saludos.