以下是引用hu9jj在2015-8-15 08:28:53的发言:
这是输出的排列问题,应该不复杂。
钻点牛角尖:两个汉字的名字统一转换成三个汉字(中间加空格),那么四个及四个以上汉字的名字如何处理呢?
这是输出的排列问题,应该不复杂。
钻点牛角尖:两个汉字的名字统一转换成三个汉字(中间加空格),那么四个及四个以上汉字的名字如何处理呢?
这可不是钻牛角尖,这是很现实的问题,中文名字最多可以有七个字(甚至更多)
程序代码:SELECT * FROM Xsxx INTO CURSOR Temp
LOCAL cStr,nCnt,cXm
cStr=""
nCnt=0
SCAN
* 去除 Name 前面的CHR(9)字符
cXm=STRTRAN(ALLTRIM(Name),CHR(9),"")
* 判断姓名是否是两个汉字
cXm=IIF(LEN(cXm)=4,STUFF(cXm,3,0,SPACE(2)),cXm)
DO CASE
CASE INLIST(LEFT(cXm,6),"高81级","班主任")
cStr=cStr+IIF(nCnt>0,0H0D0A,"")+cXm+0H0D0A
nCnt=0
OTHERWISE
nCnt=nCnt+1
cStr=cStr+cXm+IIF(MOD(nCnt,16)=0,0H0D0A,SPACE(1))
ENDCASE
ENDSCAN
* 保存在文本文件中
=STRTOFILE(cStr,"学生名单.Txt")
MODIFY FILE 学生名单.Txt
* 保存在临时表中
CREATE CURSOR Md (XM C(120))
APPEND FROM 学生名单.Txt SDF
BROWSE
CLOSE DATABASES

程序代码:SET TALK OFF
SET SAFETY Off
CLOSE ALL
CLEAR ALL
CLEAR
WAIT "请打开存放数据的文件。。。。。"
USE ?
Word=CREATEOBJECT('word.application') &&创建WORD文档
Word.Visible=.t. &&显示WORD文档
Word.Documents.add() &&建立新文档
Word.ActiveDocument.PageSetup.TopMargin=2/0.035 &&设置上页边距
Word.ActiveDocument.PageSetup.BottomMargin=2/0.035 &&设置下页边距
Word.ActiveDocument.PageSetup.LeftMargin=2/0.035 &&设置左页边距
Word.ActiveDocument.PageSetup.RightMargin=2/0.035 &&设置右页边距
GO top
Word.Selection.Font.Size = 15 &&指定字号,9为小五号,10.5为五号,12为小四号
Word.Selection.Font.Name = "黑体" &&设置字体
word.Selection.ParagraphFormat.Alignment=1
word.Selection.TypeParagraph
word.selection.typetext('学 生 名 单')
word.Selection.TypeParagraph
i=1
Word.Selection.Font.Size = 12.5 &&指定字号,9为小五号,10.5为五号,12为小四号
Word.Selection.Font.Name = "宋体" &&设置字体
word.Selection.ParagraphFormat.Alignment=0
DO WHILE !eof()
IF LEN(ALLTRIM(name))>6
word.Selection.TypeParagraph
word.selection.typetext(ALLTRIM(name))
word.Selection.TypeParagraph
SKIP
i=1
ELSE
IF MOD(i,8)=0
i=1
word.Selection.TypeParagraph
ELSE
IF LEN(allt(name))=6
word.selection.typetext( SUBSTR(name,1,8))
ELSE
word.selection.typetext( SUBSTR(name,1,2)+' '+SUBSTR(name,3,4))
ENDIF
i=i+1
ENDIF
skip
ENDIF
ENDDO
word.Selection.WholeStory
word.Selection.ParagraphFormat.LineSpacingRule = 4
Word.Selection.ParagraphFormat.LineSpacing = 17
USE
SET TALK ON
return
也许能给你些帮助。我的程序是每行8人。直接输出到WORD文档。