通过VB编写UTF-8格式的文本文件

 

   由于系统的需要,要国际化,但是由于那些字符串和翻译都写在EXCEL表格里面,如果一个一个的复制出来,那是相当麻烦的.所以老大让我写一个转换器,从EXECEL表格中导出数据,然后写到.PO扩展名的文本文件,要求UTF-8的编码格式的.

    UTF-8是UNICODE编码格式的一种特殊情况.对于汉字的处理,它是采用了三个字节.对于它的具体情况,在这就不具体介绍,网上有相当多的资料.在VB中,有很多API可以提供,比如连接EXCEL、连接数据库、ADODB数据流等。这些API都可以很方便的引用。

   在写的过程中,让我有点苦恼的是,用UTF-8编码编写的文本文件,都会产生一个BOM,这使得转换出来的文件,在系统编译中编译不过去,必须要把BOM去掉。接下来通过代码讲讲怎么实现。

  1. Dim app As Excel.Application
  2. Dim eworkbook As Workbook
  3. Dim eworksheet As Worksheet
  4. Dim eworksheet_count As Integer
  5. Dim sheetName As String
  6. Dim obj As Object
  7. Dim FileNum
  8. Dim file_path as String
  9. Dim j as Integer
  10. Dim filepath_save as String

  11. filepath_save = "d:/" 
  12. Set app = New Excel.Application                                         //连接EXCEL
  13. Set eworkbook = app.Workbooks.Open(file_path)
  14. eworkbook_count = eworkbook.Worksheets.count

  15. For j = 1 To eworkbook_count
  16.   filepath_path = filepath_save & j & ".txt"
  17.   Set eworksheet = eworkbook.Sheets(j)
  18.   sheetName = eworksheet.Name
  19.   Set obj = New ADODB.Stream     //设置ADODB流
  20.                                   
  21.   With obj
  22.     .Open
  23.     .Charset = "UTF-8"
  24.     .Position = .Size
  25.     .WriteText "helloworld", 1
  26.     .SaveToFile filepath_save
  27.     .Close
  28.   End With

  29.   Set obj = Nothing

  30.   Open filepath_save For Input As #1                                        //消除UTF-8的BOM
  31.   Line Input #1, str
  32.        mm = Replace(str, str, "msgid """"")
  33.   Close #1
  34.   Open filepath_save For Binary As #FileNum
  35.        Put #FileNum, , mm
  36.   Close #FileNum
  37. Next j

  38. Set eworksheet = Nothing
  39. eworkbook.Close
  40. Set eworkbook = Nothing
  41. app.Quit
  42. Set app = Nothing

这是其中的一部分关键的代码,如果没有设置UTF-8的编码格式的话,一般NOTEPADE的写入格式都是默认为ANSI。好久没用VB写代码了,不过这次用起来还是感觉比较好的。所以在学校多学点是好的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值