一个网站的诞生- MagicDict开发总结7 [Excel 是我的好朋友]
2011-06-03 16:34
316 查看
可能由于长期从事对日软件的开发,Excel不知不觉已经成为开发工作的一个不可或缺的软件。从某种意义上说,Office等于Excel了。
在整个网站的开发中,数据的整理基本上是Excel表格为基础的,庞大的数据放在Excel里面进行编辑。对于一些繁琐的机械化的操作,则交给VBA了。但是由于VBA的种种限制,一些很复杂的操作最后还是落到了.NET身上,使用.NET操作Excel。
这里就分享一些Excel的小技巧和注意点:
第一:对于Unicode字符的处理。
由于VBA的代码不支持Unicode,所以,当你在VBA的代码里面写上日语字符的时候,他们会变成 ? 【日语操作系统的话,则不会。。。】这个时候最常用的一个方法是,你可以定义一个字符变量,然后,把你想使用的Unicode的值放在某个Excel的单元格里面,然后在程序里面把这个单元格的值赋给这个变量,这样你就可以使用那个Unicode的文字列了。
更改前
IF A = "???" THEN
更改后
Dim strA as String
strA = Cells(1,1).Text
If A = strA THEN第二:
由于Excel速度不是很快,请一定使用 Application.Status 来定期显示你的工作进度。例如你要处理10W行记录,你应该每 5000行显示一下进度。最好每5000行操作后,保存一下结果。
If RowCount Mod 5000 = 0 then
Application.StatusBar = "Process:" & RowCount
End IF
第三:
XLS一张表格最多可以放65535行,Excel2007开始支持一张表格放10W行数据。.xlsx的文件可以使用WPS打开,不过,最多还是只能显示65535行,WPS不给力啊。
由于VBA的限制,有时候一些复杂操作,还是要交给NET来做的。。。使用.NET来控制Excel:
操作方法很简单
1.建立一个Excel对象,打开你想操作的文件
objExcel = CreateObject("Excel.Application")
'Check The Chinese is Exist in Sentence
objExcel.Workbooks.Open(XlsFileName)
objExcel.Visible = False 2.为所欲为的操作Excel,最后关闭
Dim RowCount As Integer
Dim strWord As String = String.Empty
objExcel.WorkBooks(1).Activate()
objExcel.WorkBooks(1).worksheets(1).Select()
With objExcel.WorkBooks(1).worksheets(1)
RowCount = 2
Do While .Cells(RowCount, 2).Text <> ""
If RowCount = 351 Then
Debug.Assert(True)
End If
If .Cells(RowCount, 4).Text <> "" Then
strWord = .Cells(RowCount, 4).Text
strWord = StrConv(strWord, VbStrConv.Hiragana, 1041)
If OnlyKana(strWord) Then
.Cells(RowCount, 4).value = ""
.Cells(RowCount, 5).value = strWord
End If
End If
RowCount = RowCount + 1
Loop
End With
objExcel.Workbooks.Close() 3.上面这些操作地球人都知道。但是,有一个objExcel对象的释放问题,请一定要记住:
A.在objExcel使用完毕后,如果不回收垃圾的话,后台进程里面会有一个 EXCEL 的进程。
B.垃圾回收的语句和创建objExcel的语句不能放在一个方法里面。【垃圾回收无法回收同一个方法里面的对象】
Private Sub cmdCheckData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCheckData.Click
CheckData()
objExcel = Nothing
GC.Collect()
End Sub 就像上面那样,一定要在CheckData里面创建objExcel对象,然后在GC.Collect()才能正确回收。。。
自制的操作Excel的数据整理工具
网站第二阶段研发开始了,懂日语的童鞋,能和我一起做吗?有兴趣的写信给我 root#magicdict.com [convert # to @ ]
或者加MSN mynightelfplayer@hotmail.com网站地址 http://www.magicdict.com/
在整个网站的开发中,数据的整理基本上是Excel表格为基础的,庞大的数据放在Excel里面进行编辑。对于一些繁琐的机械化的操作,则交给VBA了。但是由于VBA的种种限制,一些很复杂的操作最后还是落到了.NET身上,使用.NET操作Excel。
这里就分享一些Excel的小技巧和注意点:
第一:对于Unicode字符的处理。
由于VBA的代码不支持Unicode,所以,当你在VBA的代码里面写上日语字符的时候,他们会变成 ? 【日语操作系统的话,则不会。。。】这个时候最常用的一个方法是,你可以定义一个字符变量,然后,把你想使用的Unicode的值放在某个Excel的单元格里面,然后在程序里面把这个单元格的值赋给这个变量,这样你就可以使用那个Unicode的文字列了。
更改前
IF A = "???" THEN
更改后
Dim strA as String
strA = Cells(1,1).Text
If A = strA THEN第二:
由于Excel速度不是很快,请一定使用 Application.Status 来定期显示你的工作进度。例如你要处理10W行记录,你应该每 5000行显示一下进度。最好每5000行操作后,保存一下结果。
If RowCount Mod 5000 = 0 then
Application.StatusBar = "Process:" & RowCount
End IF
第三:
XLS一张表格最多可以放65535行,Excel2007开始支持一张表格放10W行数据。.xlsx的文件可以使用WPS打开,不过,最多还是只能显示65535行,WPS不给力啊。
由于VBA的限制,有时候一些复杂操作,还是要交给NET来做的。。。使用.NET来控制Excel:
操作方法很简单
1.建立一个Excel对象,打开你想操作的文件
objExcel = CreateObject("Excel.Application")
'Check The Chinese is Exist in Sentence
objExcel.Workbooks.Open(XlsFileName)
objExcel.Visible = False 2.为所欲为的操作Excel,最后关闭
Dim RowCount As Integer
Dim strWord As String = String.Empty
objExcel.WorkBooks(1).Activate()
objExcel.WorkBooks(1).worksheets(1).Select()
With objExcel.WorkBooks(1).worksheets(1)
RowCount = 2
Do While .Cells(RowCount, 2).Text <> ""
If RowCount = 351 Then
Debug.Assert(True)
End If
If .Cells(RowCount, 4).Text <> "" Then
strWord = .Cells(RowCount, 4).Text
strWord = StrConv(strWord, VbStrConv.Hiragana, 1041)
If OnlyKana(strWord) Then
.Cells(RowCount, 4).value = ""
.Cells(RowCount, 5).value = strWord
End If
End If
RowCount = RowCount + 1
Loop
End With
objExcel.Workbooks.Close() 3.上面这些操作地球人都知道。但是,有一个objExcel对象的释放问题,请一定要记住:
A.在objExcel使用完毕后,如果不回收垃圾的话,后台进程里面会有一个 EXCEL 的进程。
B.垃圾回收的语句和创建objExcel的语句不能放在一个方法里面。【垃圾回收无法回收同一个方法里面的对象】
Private Sub cmdCheckData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCheckData.Click
CheckData()
objExcel = Nothing
GC.Collect()
End Sub 就像上面那样,一定要在CheckData里面创建objExcel对象,然后在GC.Collect()才能正确回收。。。
自制的操作Excel的数据整理工具
网站第二阶段研发开始了,懂日语的童鞋,能和我一起做吗?有兴趣的写信给我 root#magicdict.com [convert # to @ ]
或者加MSN mynightelfplayer@hotmail.com网站地址 http://www.magicdict.com/
相关文章推荐
- 一个网站的诞生- MagicDict开发总结10 [第一阶段的检索流程]
- 一个网站的诞生- MagicDict开发总结6 [划词 检索]
- 一个网站的诞生- MagicDict开发总结8 [页面优化 能省一点是一点]
- 一个网站的诞生- MagicDict开发总结9 [日语单词检索策略]
- 一个网站的诞生- MagicDict开发总结4 [如果有阶层数据库就完美了]
- 一个网站的诞生- MagicDict开发总结3 [日语字典数据结构]
- 一个网站的诞生- MagicDict开发总结5 [检索候补列表的生成]
- 一个网站的诞生- MagicDict开发总结1 [首页]
- 一个网站的诞生- MagicDict开发总结2 [ACCESS的烦恼]
- 搭建一个视频和论坛网站的一些总结
- 发现了一个很好的做excel、ppt 水晶易表、spss的好网站
- 如何一步一步用DDD设计一个电商网站(十四)—— 回顾与总结
- 一个网站的诞生- MagicDict未来予想図3 [表格的动态增加行和删除行,高手绕路]
- Jxls导出excel的若干方式总结(六)-- 分sheet导出查询记录,每条记录一个sheet
- 运维运营一个网站的经验总结
- 曾经到一个电子商务网站的项目,让我总结了一些不足
- 一个网站的诞生04--抓取一个餐厅的某个月的全部评论
- Jxls导出excel的若干方式总结(六)-- 分sheet导出查询记录,每条记录一个sheet
- 经验总结26--EF6多网站使用一个数据库
- 一个网站的诞生- MagicDict未来予想図1 [水平分割数据表的构想]