同事写的使用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