找回密码
 加入
搜索
查看: 2608|回复: 12

[网络通信] [已解决]如何将输入的字符串变成每个字符写一列输入Excel?

[复制链接]
发表于 2019-6-5 20:16:36 | 显示全部楼层 |阅读模式
本帖最后由 study520x 于 2019-6-12 20:03 编辑

学校导入选择题用的 比如说一大串标准答案ABCD
如何变成
A
B
C
D
竖排 每排就写一个字母 写入Excel?

现在一直用手工方法 好麻烦啊 求助各位大神 谢谢

1.查找? 替换  ^&+空格
说明:?为英文问号,一个问号代表一个汉字/英文字母,如输???则每3个字之间加空格

2.Ctrl+F3全部大写

3.粘贴到Excel

4.数据-分列-分隔符号

5.选中行复制,选择性粘贴,勾上转置

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2019-6-6 09:08:26 | 显示全部楼层
很简单,加个回车符就可以了
        $x="a"
        $y="b"
        $s1=$x& @cr&$y
        ClipPut($s1)
发表于 2019-6-6 10:18:44 | 显示全部楼层
Local $sSource = 'ABCD'
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
MsgBox(0, '替换结果', $sSRERe)
 楼主| 发表于 2019-6-6 18:06:54 | 显示全部楼层
本帖最后由 study520x 于 2019-6-6 19:14 编辑

@afan @duxing谢谢2 3楼  英语60道选择题 3楼的比较方便
然后我写好了 想弄个gui 可以在框里输入$sSource 按确定按钮然后可以执行下面的操作该怎么做 代码如下

#include <Excel.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Form2", 406, 295, 207, 127)
$Input1 = GUICtrlCreateInput("Input1", 104, 72, 225, 21)
$Button1 = GUICtrlCreateButton("确定", 136, 168, 145, 65)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

#include <MsgBoxConstants.au3>
Local $oExcel = _Excel_Open()
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\1.xls")
Local $sSource = 'ABCD'
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
ClipPut ( $sSRERe )
ClipGet ( )
$oExcel.ActiveSheet.Range("F3").PasteSpecial
MsgBox(0, "", "标准答案已复制",1)
$oWorkbook1.Save()
$oExcel.Quit

               


 楼主| 发表于 2019-6-6 21:35:26 | 显示全部楼层
在论坛东抄西抄 作品完成了 求大神帮忙优化一下 那个输入框 每行十个字母就自动换行 最多六行 成品如下
#include <Excel.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2_1 = GUICreate("标准答案导入辅助", 407, 296, 207, 127)
$Input1 = GUICtrlCreateInput("", 48, 32, 305, 128)
$Button1 = GUICtrlCreateButton("确定", 131, 187, 145, 65)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        $r2=GUICtrlRead($Input1)

Local $oExcel = _Excel_Open()
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\1.xls")
Local $sSource = $r2
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
ClipPut ( $sSRERe )
ClipGet ( )
$oExcel.ActiveSheet.Range("F3").PasteSpecial
MsgBox(0, "", "标准答案已复制",1)
$oWorkbook1.Save()
$oExcel.Quit
                
        EndSwitch
WEnd

 楼主| 发表于 2019-6-7 01:04:34 | 显示全部楼层
看论坛例子抄的最终版 还是不明白为什么这样能换行
#include <Excel.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <string.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("标准答案", 191, 241, 820, 716)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 195, 190, $ES_WANTRETURN)
GUICtrlSetFont(-1, 16, 400, 0, "微软雅黑")
$Button1 = GUICtrlCreateButton("标准答案", 0, 192, 192, 48)
GUICtrlSetFont(-1, 16, 400, 0, "微软雅黑")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        $a = GUICtrlRead($Edit1)
                        $b = StringLen($a)
                        ;For $i = 1 To Round($b / 30)
                               ;If $i = 1 Then
                                       ; $a = _StringInsert($a, @CRLF, $i * 30)
                               ; Else
                                        ;$a = _StringInsert($a, @CRLF, $i * 30 + ($i - 1))
                                ;EndIf
                       ; Next
Local $oExcel = _Excel_Open()
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\1.xls")
Local $sSource = $a
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
ClipPut ( $sSRERe )
ClipGet ( )
$oExcel.ActiveSheet.Range("F3").PasteSpecial
MsgBox(0, "", "标准答案已复制",1)
$oWorkbook1.Save()
$oExcel.Quit
        EndSwitch
WEnd

 楼主| 发表于 2019-6-8 00:10:20 | 显示全部楼层
本帖最后由 study520x 于 2019-6-8 00:52 编辑

发现还有个问题 就是每科的答案长度不一样 如何 导入前先删除F3 这个单元格往下列的数据再导入呢?
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\标准答案.xls")
                        Local $sRange = "F3:F62"
_Excel_RangeDelete($oWorkbook.ActiveSheet, $sRange, $xlShiftUp)



这个F3:F62能用什么替代不?

发表于 2019-6-8 18:19:33 | 显示全部楼层
本帖最后由 chzj589 于 2019-6-10 15:38 编辑
study520x 发表于 2019-6-7 01:04
看论坛例子抄的最终版 还是不明白为什么这样能换行
Local $sSRERe = StringRegExpReplace($a, '(?<=\w)', @CRLF)        @CRLF



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2019-6-8 18:36:12 | 显示全部楼层
chzj589 发表于 2019-6-8 18:19
[au3]
#include
#include

我的已经做好了 只是不明白换行的原理是啥
发表于 2019-6-8 18:48:27 | 显示全部楼层
study520x 发表于 2019-6-8 18:36
我的已经做好了 只是不明白换行的原理是啥

_Excel_RangeDelete
删除指定工作表中一或多个单元格, 行或列


 楼主| 发表于 2019-6-9 14:13:02 | 显示全部楼层
chzj589 发表于 2019-6-8 18:48
_Excel_RangeDelete
删除指定工作表中一或多个单元格, 行或列

谢谢 不过答非所问
发表于 2019-6-9 22:57:14 | 显示全部楼层
学习,学习,非常感谢
发表于 2019-6-10 00:09:50 | 显示全部楼层
学习,学习,非常感谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 20:25 , Processed in 0.098552 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表