una texto respeta quitar poner para números numero inicio general formato espacios cómo cuál convertir concatenar con como celda apostrofe excel interop import apostrophe

texto - excel no respeta formato de celda



Cómo hacer que Excel ignore el apóstrofo en el comienzo de la celda (4)

prueba targetcell.Value en targetcell.Value lugar. .Formula es la fórmula que se ve en la barra de fórmulas, mientras que .Value es el valor evaluado de la celda.

Entonces, supongo que también .Formula usado .Formula en tu código original. Cambiar eso debería funcionar.

EDITAR: Ok, no funcionó (avergonzado).

Excel trata especialmente la comilla simple inicial ... de modo que incluso las propiedades oscuras de celda / rango no tienen acceso. La única solución que pude encontrar es esencialmente la misma que pensaste inicialmente. Aquí va:

If VarType(cell) = 8 And Not cell.HasFormula Then GetFormulaI = "''" & cell.Formula Else GetFormulaI = cell.Formula End If

Estoy escribiendo una herramienta que sincroniza una base de datos simple con hojas de Excel. Cada elemento en una tabla en la base de datos corresponde a una fila en la hoja de trabajo. Leí la hoja de Excel en la herramienta usando C # y la interfaz de interoperabilidad de Excel, luego comparé los valores de los artículos (es decir, una de las columnas en la hoja de Excel) después de la sincronización solo para asegurarme de que son iguales.

Ayer encontré un caso donde la comparación no era cierta:

"''<MedalTitle>'' Medal - <MedalDescription>" "<MedalTitle>'' Medal - <MedalDescription>"

El segundo es el que leí desde Excel, y como puede ver, se salteó el primer apóstrofo. ¿Hay alguna manera de decirle a Excel que trate la celda como solo texto (no, solo establecer el formato de la celda no ayuda)?

Incluso traté de copiar el valor ( ''hola'' ) de una celda en VBA de esta manera:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Target.Offset(1, 0).Value = Target.Worksheet.Range("b2").Value Target.Offset(2, 0).Value = Target.Worksheet.Range("b2").Formula Target.Offset(3, 0).Formula = Target.Worksheet.Range("b2").Formula Target.Offset(4, 0).Formula = Target.Worksheet.Range("b2").Value End Sub

El resultado fue que el valor de la celda objetivo siempre es hola ''

Si no hay forma, tendré que hacer algo feo como

if (dbitem.value[0] == '''''' ) { // stuff } else { // regular comparison }


Mire la propiedad PrefixCharacter del objeto Range que corresponde a esa celda

De la ayuda:

Si la propiedad TransitionNavigKeys es False , este carácter de prefijo será ''para una etiqueta de texto o en blanco. Si la propiedad TransitionNavigKeys es True , este carácter será ''para una etiqueta justificada a la izquierda'', para una etiqueta justificada a la derecha, ^ para una etiqueta centrada, / para una etiqueta repetida, o en blanco.

La parte TransitionNavigKeys relaciona con la compatibilidad de Lotus 1-2-3 por lo que es más que probable que sea False

Respuesta basada en el artículo en:

http://excel.tips.net/Pages/T003332_Searching_for_Leading_Apostrophes.html

(advertencia: puede aparecer un pop-up ligeramente molesto)

editar: en realidad, esto probablemente no PrefixCharacter nada porque PrefixCharacter es de solo lectura :(

edit2: estaba en lo cierto la primera vez. PrefixCharacter solo se llena si el valor agregado a la celda se inició con ''así que simplemente vuelve a leer PrefixCharacter plus Value y concatenate. Mientras TransitionNavigKeys sea False , eso es


Puede intentar hacer una cita previa pendiente de sus campos de texto ('''' '''' + dbField) en su consulta para que los campos con comillas simples incorporadas devuelvan su consulta:

"''''stuff in single quotes''"

que cuando se coloca en una celda de Excel se convertiría a:

"''stuff in single quotes''"

para los personajes que no estaban entre comillas obtendrías:

"''stuff that wasn''t in quotes"

que cuando se coloca en una celda de Excel se convertiría a:

"stuff that wasn''t in quotes"

Merece un intento. :-)


Me temo que el apóstrofo es un carácter especial para Excel cuando aparece como el primer personaje de una celda que has encontrado. Le dice a Excel que trate el resto de la cadena como texto, para que pueda ingresar algo como ''34.2 en la celda, y lo tratará como la cadena en lugar del número (para formatear, etc.).

Te sugiero que hagas algo similar a lo que has sugerido, excepto que cuando lo estés colocando en Excel, verifica el primer carácter y agrega un extra '' si ya hay alguno".

De forma alternativa, puede anteponer un apóstrofo a todos los valores, si los quiere a todos como texto. De esta forma no necesita la verificación adicional del primer carácter.