您的位置:首页 > 编程语言 > Java开发

使用Excel自动生成Java中的Model类

2009-02-06 13:16 573 查看
同事写的使用Excel生成Java的Model类的宏。我觉得很实用,赞一个,也顺便推广一把。

如图所示:



Alt+F11进入后台:



代码如下:

Private Sub CommandButton1_Click()

Set fs = CreateObject("Scripting.FileSystemObject")

fileNm = Range("C3").Value

tbNm = Range("B3").Value
tbId = Range("C3").Value
ctDate = Range("D3").Value
ctNm = Range("E3").Value

classNm = "T" + UCase(Mid(tbId, 3, 1)) + Mid(tbId, 4, Len(tbId))

filePath = "C:/" + classNm + ".java"

Set output = fs.CreateTextFile(filePath, True, True)

output.WriteLine ("package com.nauproject.apm.entity.base;")
output.WriteLine ("")
output.WriteLine ("import java.io.Serializable;")
output.WriteLine ("")
output.WriteLine ("import org.seasar.dao.annotation.tiger.Bean;")
output.WriteLine ("")
output.WriteLine ("/**")
output.WriteLine (" * <P>")
output.WriteLine (" * " + tbNm + " " + classNm + " 僋儔僗")
output.WriteLine (" * </P>")
output.WriteLine (" * <BLOCKQUOTE> Copyright (C) 2008-2009, apm. All rights reserved. </BLOCKQUOTE>")
output.WriteLine (" * <P>")
output.WriteLine (" * </P>")
output.WriteLine (" * <B>夵斉棜楌:</B> <BLOCKQUOTE> " + ctDate + " 1.0.0 " + ctNm + " 怴婯嶌惉 </BLOCKQUOTE>")
output.WriteLine (" *")
output.WriteLine (" * @author " + ctNm)
output.WriteLine (" * @since " + ctDate)
output.WriteLine (" * @see")
output.WriteLine (" * @version 1.0, " + ctDate)
output.WriteLine (" */")
output.WriteLine ("@Bean(table = """ + tbId + """)")
output.WriteLine ("public class " + classNm + " implements Serializable {")
output.WriteLine ("")
output.WriteLine ("    /**")
output.WriteLine ("     * @see serialVersionUID")
output.WriteLine ("     */")
output.WriteLine ("    private static final long serialVersionUID = ;")
output.WriteLine ("")

countC = 0

For i = 8 To 208

If Cells(i, 3).Value <> "" Then
countC = countC + 1
End If

Next

For k = 1 To countC

output.WriteLine ("    /**")
output.WriteLine ("     * @see " + Cells(k + 7, 2))
output.WriteLine ("     */")
output.WriteLine ("    private " + Cells(k + 7, 4).Value + " " + Cells(k + 7, 3).Value + ";")
output.WriteLine ("")

Next

For k = 1 To countC

If Cells(k + 7, 4).Value = "int" Then
paramId = "int"
Else

If Cells(k + 7, 4).Value = "String" Then
paramId = "str"
Else

If Cells(k + 7, 4).Value = "Date" Then
paramId = "date"
Else
paramId = ""
End If
End If

End If

uId = UCase(Mid(Cells(k + 7, 3).Value, 1, 1)) + Mid(Cells(k + 7, 3).Value, 2, Len(Cells(k + 7, 3).Value))

output.WriteLine ("    /**")
output.WriteLine ("     * @param " + paramId + uId + " " + Cells(k + 7, 2))
output.WriteLine ("     */")
output.WriteLine ("    public final void set" + uId + "(final " + Cells(k + 7, 4).Value + " " + paramId + uId + ") {")
output.WriteLine ("        this." + Cells(k + 7, 3).Value + " = " + paramId + uId + ";")
output.WriteLine ("    }")
output.WriteLine ("")
output.WriteLine ("    /**")
output.WriteLine ("     * @return " + Cells(k + 7, 2))
output.WriteLine ("     */")
output.WriteLine ("    public final " + Cells(k + 7, 4).Value + " get" + uId + "() {")
output.WriteLine ("        return " + Cells(k + 7, 3).Value + ";")
output.WriteLine ("    }")
output.WriteLine ("")

Next

output.WriteLine ("}")
output.Close

End Sub
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐