更新时间:2022-09-13 16:56:17
背景
业务需要依据详细设计文档编写所有对应的页面
问题
工作量大,11张大表(几十上百字段)时间紧 3天完成
核心
有完整的表设计,可通过excel手动编辑完成。
新问题
普通字段没问题,可增加了字典后工作量骤然提升,这种特殊性让工作的难度和体量都给手工操作Excel带来了挑战
解决方案
通过代码实现手工操作excel的工作,也就是编写VBA宏
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
Sub detailPage()
' ' 沫沫金 ' 生成居民健康档案浏览器页面,时间: 2017/08/17 ' Dim tri As Integer , td, tableName, nameC, valC, dicC, saveC As String
' '配置区域:Config ' '三列一行控制器记录仪 tri = 1 '表名列 tableName = LCase(Cells(1, "D" ))
'label列 nameC = "A"
'值列 valC = "B"
'字典列 dicC = "C"
'存储列 saveC = "F"
For n = 1 To [A65536]. End (xlUp).Row
'初始行内容
td = ""
'三列一行
If tri = 1 Then td = "<tr>"
'字段说明
td = td + "<td width=''33%''><h3><i class=''ico ico_23''></i>" + Cells(n, nameC)
'字典字段特殊处理
If Cells(n, dicC) = "" Then
td = td + "</h3><p>${sessionScope.data." + tableName + "[index]." + LCase(Cells(n, valC)) + "}</p></td>"
Else
td = td + "</h3><p><dic:dic type=" "" + Cells(n, dicC) + "" " value=" "${sessionScope.data." + tableName + "[index]." + LCase(Cells(n, valC)) + "}" " /></p></td>"
End If
'三列一行结束处理
If tri = 3 Then td = td + "</tr>"
'拼接一行,扔到空闲列统一拷贝
Cells(n, saveC) = td
'当前列记录
tri = tri + 1
'三列一行控制器
If tri > 3 Then tri = 1
Next n
MsgBox "恭喜你,详细信息生成成功。"
' End Sub
|
启用宏,拷贝到代码区运行即可看到拼接结果。完全自定义拼接格式,百分百解放双手的工具。
下面,给java开发同伴重点说明下
if判断 条件不用圆括号
条件判断等于一个等号
格式排版必须控制好
没有分号
以上,运行说明,在当前的sheet页Alt+F8运行上面的宏。生成完成会收到友情提醒,好了,愉快的VBA结束。