Pregunta:
Programa de código abierto para copiar el contenido de un archivo de texto de Windows al portapapeles
Mike Pennington
2014-03-11 19:24:44 UTC
view on stackexchange narkive permalink

Background

Construyo muchos archivos de texto en mi $ DAYJOB, que luego se envían a un panel de revisión en un documento de Excel muy complicado. El contenido de cada archivo de texto debe pegarse en un cuadro de texto en las pestañas individuales de Excel (con el nombre apropiado). Cualquier hoja de Excel podría tener entre 30 y 220 pestañas diferentes para estos archivos de texto.

Lo que solía funcionar

Originalmente, apunté un script de Python a una carpeta de Windows llena de texto archivos y le pidió que creara un documento exel en blanco como tal; luego copié las pestañas en la plantilla formateada de Excel. Sin embargo, nuestras medidas de seguridad de escritorio corporativas cambiaron de una manera que ahora rompe ese guión. Todos los documentos de Excel están encriptados por DRM Security Middleware que rompe mis hojas de Excel con guiones. Mis súplicas para detener la locura no han ido a ninguna parte.

El problema

Ahora mi solución es copiar manualmente & paste (es cierto que soy más un programador de Unix que una persona de Windows). Hacer clic en cien archivos de texto y copiar el contenido en Excel manualmente es abrumador, y se multiplica con cada evento de clic / pulsación de tecla requerido. Para cada archivo, parece que dedico más de la mitad de mi esfuerzo a:

  • Hacer doble clic para abrir el archivo (Eventos 1 & 2 - Clics)
  • Seleccionar todo con Cntl a (Evento 3 - Pulsación de tecla)
  • Copie al portapapeles con Cntl c (Evento 4 - Pulsación de tecla)
  • Pegue en Excel TextBox en espera con Cntl v (Evento 5 - Pulsación de tecla)
  • Cierre el archivo abierto, no se acumulan (Evento 6 - Clic)

Me encantaría encontrar una forma aceptable de solucionar este problema. Encontré algo llamado Copiar contenido de texto, que supuestamente realiza una copia de contenido de archivo con dos clics en el portapapeles; sin embargo, el software es gratuito pero de código cerrado. No puedo instalar software gratuito de código cerrado en nuestros equipos de escritorio; sin embargo, las soluciones de software gratuito de código abierto son aceptables.

Pregunta

Me gustaría una solución de código abierto para este problema; Estoy solicitando una alternativa de código abierto a Copiar contenido de texto, pero si a alguien se le ocurre una solución de software alternativa que funcione con Excel, soy todo oídos.

Nota: los saltos de línea en los archivos de texto deben conservarse.

su solicitud sigue siendo semiautomática, en caso de que prefiera Unix (y probablemente también las secuencias de comandos PHP), sugeriría esta biblioteca http://phpexcel.codeplex.com para manejar formatos de archivo OpenOffice, como XLSX. lo que estoy tratando de decir es que uno podría copiarlo directamente en la hoja de cálculo en lugar del portapapeles (por supuesto, solo tiene sentido, mientras que no se requiere inteligencia para pegarlo en la celda adecuada).
Seis respuestas:
mrexodia
2014-03-11 21:22:33 UTC
view on stackexchange narkive permalink

Aquí, creé una aplicación de código abierto para ti que debería hacer las cosas que quieras.

https://bitbucket.org/mrexodia/copyfile

Acepto solicitudes de extracción si desea mejorar la cosa.

EDITAR:

Descripción general: CopyFile es un pequeño programa que registra una entrada 'CopyFile' en el menú contextual del Explorador de Windows. Copia el contenido de un archivo ASCII (los archivos UNICODE no son compatibles).

¡Agradable! Sería incluso mejor si le vinculara un combo de teclas de acceso rápido (para copiar el contenido del archivo desde el teclado, pero esto es genial). También es deprimentemente pequeño ... tendré que ver si puedo entender lo que hiciste aquí
¿Podrías agregar más detalles para contar específicamente a otros usuarios las características de esta aplicación?
Sin embargo, @aman207: seguro, hay un archivo Léame en el repositorio. Mike Pennington: no es posible vincular una tecla de acceso rápido a un elemento del menú contextual directamente. Eso requeriría un enganche desagradable, pero la fuente es todo tuyo para hacer lo que quieras, así que sigue adelante y agrégalo: P
Gilles 'SO- stop being evil'
2014-03-13 00:22:39 UTC
view on stackexchange narkive permalink

Ah, ya veo, quieres hacer xsel -bi data.txt; xdotool search --class Excel key ctrl + v , solo en Windows.

Este es un trabajo para un script, no una aplicación ad hoc.

AutoHotkey es un entorno de secuencias de comandos de automatización de escritorio de uso general para Windows. Es de código abierto. El lenguaje de secuencias de comandos combina la elegancia de la sintaxis básica con la intuición del análisis de shell de Unix y la regularidad de la expansión de TeX, pero hace el trabajo.

Aquí hay una secuencia de comandos que hace lo que describí anteriormente.

  #NoEnv; #WarnSendMode Input ;; Lea el archivo pasado en la línea de comando (o solicite uno) If% 0% = 0 {FileSelectFile, 1 IfNotEqual, ErrorLevel, 0, Exit, 2} FileRead, data,% 1% IfNotEqual, ErrorLevel, 0, Exit, 2 ;; Copie el contenido en el portapapelesclipboard =% data% ;; Busque y active la ventana principal de Excel. ;; Para llegar a un cuadro de diálogo, es posible que deba cambiar la clase. Ejecute AutoHotKey ;; programa complementario Window Spy para determinar el nombre de la clase. WinGet, w, ID, AWinActivate, ahk_class XLMAINIfNotEqual, ErrorLevel, 0, Exit, 1WinGet, ww, ID, A ;; Enviar el atajo de pegar Enviar ^ v ;; Restaurar la ventana activa originalWinActivate, ahk_id% w%  

Desde la línea de comando, ejecute

  autohotkey \ path \ to \ copy-to-excel.ahk data.txt  

Puede agregar el comando \ path \ to \ autohotkey \ path \ to \ copy-to-excel.ahk en el menú contextual en Explorer; consulte ¿Cómo puedo agregar un programa al menú contextual de todos los archivos?, Cambiar qué programas usa Windows de forma predeterminada o Cómo establecer asociaciones de archivos en Windows 7 ( no 'abrir', sino otros) o Personalice el menú Enviar a de Windows 7 o Vista según exactamente dónde y cuándo desea que aparezca el comando en el menú.

Gilles, gracias por la respuesta. Está superando un poco cuando agregó la pieza para pegarla en Excel (quiero cosas en un lugar específico dentro de la hoja de trabajo, y hay varios cuadros de texto por hoja); sin embargo, esto ciertamente ilustra muy bien el concepto. Gracias
Fractaliste
2014-03-11 19:57:39 UTC
view on stackexchange narkive permalink

Respondo a esta parte de tu pregunta:

si a alguien se le ocurre una alternativa de Excel con guión, soy todo oídos.

AutoIt es un lenguaje de secuencia de comandos que le permite automatizar la interfaz de usuario de Windows y luego eludir su restricción de seguridad.

Para cubrir sus necesidades, AutoIt proporciona una función básica de acceso a archivos (como lo hizo en Python, creo) para leer el contenido de sus archivos .txt . Luego, con la automatización de su interfaz gráfica de usuario de Windows, puede escribir el contenido en su archivo Excell (recomiendo usar el activador de teclas en lugar del mouse) como lo haría un humano.

Es un lenguaje de script de programación, así que´ Es muy poderoso, pero podría ser complicado para un público no iniciado, pero parece que se siente cómodo con la programación. En realidad, se proporciona un grabador de macros , muy útil para aprenderlo.

AutoIt es bien conocido por la gran cantidad de bots de juegos creados con él. Personalmente lo usé para automatizar el copiado / pegado de texto y enviarlo a través de la red.

Gracias por su respuesta; sin embargo, solicito una solución de copia de contenido de archivos en lugar de un lenguaje de programación para construir la solución. Sin embargo, si publicó el script AutoIT para hacerlo, eso responde a mi pregunta.
@MikePennington sí, no es una solución lista para usar. En realidad, le estaba respondiendo la última oración: * si alguien presenta una alternativa de Excel con guión, soy todo oídos. *
Puedo ver la ambigüedad en esa oración; sin embargo, mi intención es pedir soluciones, no lenguajes para construir la solución.
Bien, ¿es por eso que no lo creó directamente en VBA Excel?
¿"AutoIt" ​​es de código abierto?
@w3d forma parte de las fuentes [están disponibles] (http://www.autoitscript.com/forum/topic/8389-autoit-source-code/), pero no es totalmente de código abierto.
Autohotkey es una bifurcación de código abierto de Autoit, y de hecho es el camino correcto a seguir aquí.
Sathyajith Bhat
2014-03-12 17:12:33 UTC
view on stackexchange narkive permalink

Yo uso Ditto, que es un administrador de portapapeles de código abierto.

Ditto te permite copiar el contenido de & pegar en cualquier aplicación de Windows. Las cosas que me hicieron seleccionar Ditto -

  • Historial del portapapeles de búsqueda
  • Asignar teclas de acceso rápido a las 10 copias principales del portapapeles, lo que le permite pegar fácilmente
  • Puede usar sin tener que tocar el mouse
  • Teclas de acceso rápido globales para pegar
  • Lista separada para aplicaciones que están incluidas / excluidas de las operaciones del portapapeles
  • Organizar el texto para pegarlo en grupos , lo que permite una fácil organización
  • Configuraciones configurables para el número de días & cantidad de entradas del portapapeles que se conservarán

Ditto está disponible como un programa con licencia GPLv3.

Gracias por responder, intenté usar Ditto antes de hacer esta pregunta, pero no pude encontrar una manera de obtener los archivos de texto en Ditto sin más pulsaciones de teclas que "el método manual". ¿Podría explicarme cómo podría resolver mi problema con él?
@Mike mencionas el script Python: el script puede abrir los archivos de texto y copiar el contenido al portapapeles. El contenido estará disponible en Ditto, y puede usar las teclas de acceso rápido globales para pegar el texto copiado en Excel. Sin embargo, Ditto admite teclas de acceso rápido solo para 10 entradas recientes del portapapeles, por lo que esto podría ser un problema
Ok, la interfaz de usuario de Ditto no parece ser amigable con la gran cantidad de archivos con los que estoy tratando, pero esta es una idea útil ...
user949283
2014-05-11 14:02:39 UTC
view on stackexchange narkive permalink

Windows viene con una utilidad llamada "clip.exe" que creo que hace exactamente lo que quieres. (A menos que esté decidido a manejar cosas desde el explorador).

Uso:

C:> clip /?

CLIP

Descripción: Redirige la salida de las herramientas de línea de comando al portapapeles de Windows. Esta salida de texto se puede pegar en otros programas.

Lista de parámetros: /? Muestra este mensaje de ayuda.

Ejemplos:

  DIR | CLIP Coloca una copia de la lista del directorio actual en el portapapeles de Windows.CLIP < README.TXT Coloca una copia del texto de readme.txt en el portapapeles de Windows.  

Aunque no estoy completamente familiarizado con su flujo de trabajo, parecería sensato envolver esto en un script que itera sobre todos los archivos que desea ingresar en la hoja de cálculo con un paso para esperar la entrada del usuario entre cada uno.

Avi
2014-05-11 08:15:37 UTC
view on stackexchange narkive permalink

Puede usar mi programa de administración de portapapeles Clipjump para hacerlo. Tiene una función incorporada para copiar el contenido del archivo seleccionado a sus múltiples portapapeles.

Todo lo que tiene que hacer es seleccionar un archivo en el Explorador de Windows (o cualquier otro administrador de archivos) y presionar el acceso directo. El contenido del archivo será capturado por sus múltiples portapapeles. Cuando haya copiado todos los archivos de texto en clipjump, presione y mantenga presionada la tecla Ctrl y use la tecla V ( Comenzando) para navegar a través de todos los datos copiados y pegarlos uno por uno soltando Ctrl. Se recordará el clip actual que está activo.

El acceso directo a nivel de sistema predeterminado para Copiar ruta de archivo no está definido. Deberá configurarlo en la Configuración.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...