数据库里面的数据原来都是文字型的,为了取值方便,我把他们改成了数字型,譬如"00100"现在导入excel的时候是变成数字的100。但是客户要求数字型栽导入的时候还是"00100"而不是100。请问我能做些什么来修改呢?

解决方案 »

  1.   

    你如果用代码导入,可以在写 range 时在内容前加 ' 号。比如你要向 a1 写入 000100,那么就是 ...range("a1")="'000100"这样 excel 就识别为字符。
      

  2.   

    谢谢楼上回贴的大虾。我号几次贴子里面你们都给我回贴了。thanksPrivate Sub Excel_TorisakiM()   Dim i, count As Long
       
       On Error Resume Next
     
       CommonDialog1.ShowSave
       
     'When this property is set to True, error number 32755 (cdlCancel) occurs whenever the user chooses the Cancel button
          If Err.Number = 32755 Then
            Err.Clear
            Exit Sub
          End If
           
        special
        
        Set xlApp = CreateObject("excel.application")
        Set xlBook = xlApp.Workbooks.Open(myFilename)
        Set xlSheet = xlBook.Worksheets(1)
       
       count = Oradyn.RecordCount  Screen.MousePointer = vbHourglass
     If Oradyn.RecordCount <> 0 Then
       Oradyn.MoveFirst
       i = 2
      Do Until Oradyn.EOF = True
         DoEvents
           WaitL.Caption = "Excel出力中..." & Str(i - 1) & "/" & Str(count) & "件"
           WaitL.Refresh         If IsNumeric(Oradyn!TORI_CODE) = False Then
                xlSheet.Cells(i, 1) = NullStrConv(Oradyn!TORI_CODE)
             Else
               xlSheet.Cells(i, 1) = NullNumConv(Oradyn!TORI_CODE)
             End If
             Debug.Print 2; xlSheet.Cells(i, 1)
             Debug.Print 4; NullNumConv(Oradyn!TORI_CODE)
            
            xlSheet.Cells(i, 2) = NullStrConv(Oradyn!TORI_KANA)
            xlSheet.Cells(i, 3) = NullStrConv(Oradyn!TORI_NAME)
            xlSheet.Cells(i, 4) = NullStrConv(Oradyn!TORI_RYAKU)
            xlSheet.Cells(i, 5) = NullStrConv(Oradyn!TORI_ADDRESS1)
            xlSheet.Cells(i, 6) = NullStrConv(Oradyn!TORI_ADDRESS2)
            xlSheet.Cells(i, 7) = NullStrConv(Oradyn!TORI_TEL)
            xlSheet.Cells(i, 8) = NullStrConv(Oradyn!TORI_FAX)
            xlSheet.Cells(i, 9) = NullStrConv(Oradyn!TORI_AITE_TANMEI)       i = i + 1
           Oradyn.MoveNext
       LoopEnd If    xlApp.Visible = False    xlBook.Save    xlApp.Quit    Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
        Screen.MousePointer = vbDefault
      
        MsgBox myFilename & " を作成終了しました。", vbInformation, "情報"
        WaitL.Caption = vbNullString
        CloseB.Enabled = True   我excel的部分是这样的,设置断点的时候,鼠标到了  Debug.Print 4; NullNumConv(Oradyn!TORI_CODE)的时候显示为00100,但是打开excel九还是100。这个是怎么回事??怎么改呢??
      

  3.   

    已说了要加 ' 前导,excel 就是这么用的。
    如果你经常使用 excel ,就不会有些疑问。
    如果你不在一串数字前加 ' ,它会默认的将其转换成数值!!!
    包括你直接在 excel 中输入也一样。
    不信你输入 000100 试试?
    只要加 ' 就行了,excel 本身的规则。xlSheet.Cells(i, 1) = "'" & NullNumConv(Oradyn!TORI_CODE)
      

  4.   

    ActiveSheet.Range("A1").NumberFormat = "@"
    将A1转化为文本类型,当然,你应该在给它赋值前用上句设置单元格格式
      

  5.   

    xlSheet.Cells(i, j) = "'" & number(i,j)
      

  6.   

    でも、でも。发音是dei mo ,dei mo.就是但是,但是的意思。大家不要踢我。我学日语和国际贸易的,进了公司才转行做程序的,所以好多都不懂。
    谢谢两个阿勇,谢谢柏油。
      你们的方法我式过了,还是没有起效,我想这会不会和我把数据改成了数字型有关系啊。
      数据库里面本来的数据是 :0000001,0000002。000100。zasb28,zasmcn这样的,我为了区分数字和英文的数据,就吧000001什么的都用val转型了。
       Hincd1T,Hincd2T都是文本框。Oradyn!TORI_CODE是数据库里面TORI_CODE那一列所有的数据。
       现在要不要再给提取出来的数据转型啊,转回文字型?
       对不起,菜鸟一只,麻烦大家了
        Do
         DoEvents
           If IsNumeric(Hincd1T.Text) = True And IsNumeric(Hincd2T.Text) = True Then
              If IsNumeric(Oradyn!TORI_CODE) And Val(Oradyn!TORI_CODE) >= Val(Hincd1T.Text) And Val(Oradyn!TORI_CODE) <= Val(Hincd2T.Text) Then
                 Excel_TorisakiF
                 i = i + 1
               End If
               
            Else
            'if the textbox's value is word then put the code here
             If Not IsNumeric(Oradyn!TORI_CODE) Then
                Excel_TorisakiF
                i = i + 1
             End If
            End If
          
          Oradyn.MoveNext
         Loop Until Oradyn.EOF = True
      

  7.   

    设置一下导入列为文本:
      xlApp.Columns("A:A").Select
        xlApp.Selection.NumberFormatLocal = "@"
        xlSheet.Range("A1").Value = "001"
      

  8.   

    我这么处理了,就可以了 xlSheet.Cells(i, 1) = "'" & NullStrConv(Oradyn!TORI_CODE)
       但为什么xlSheet.Cells(i, 1) = "'" & NullStrConv(Oradyn!TORI_CODE)就不行呢?
     
        Public Function NullStrConv(dstr As Variant) As String
        If IsNull(dstr) = True Then
            NullStrConv = vbNullString
        Else
            NullStrConv = dstr
        End If
    End FunctionPublic Function NullNumConv(dstr As Variant) As Double
        If IsNull(dstr) = True Then
            NullNumConv = 0#
        Else
            NullNumConv = dstr
        End If
    End Function
      还有,为什么要加'号呢
      

  9.   

    就是楼上的办法xlApp.的属性设置以下就可以了另外,建议你不要调用xls对象,速度慢还容易死掉,直接写html文本也可以备excel识别的
      

  10.   

    0000001,0000002。000100。zasb28,zasmcn这样的,我为了区分数字和英文的数据,就吧000001什么的都用val转型了。
    ========================
    要是用val转换,哪就不行了,0000001就成了1了,你必须用字符类型,才能保持0000001,如需要计算,先val转型,在计算后还要给它前面补0,转成字符串才可以
      

  11.   

    设置一下导入列为文本:
      xlApp.Columns("A:A").Select
    xlApp.Selection.NumberFormatLocal = "@"
    xlSheet.Range("A1").Value = "001"
    xlSheet.Cells(i, 1) = "'" & NullNumConv(Oradyn!TORI_CODE)
    就可以了
      

  12.   

    好! (e表, 它避免了大量的复杂SQL编写以及编程来准备数据。轻松实现复杂的统计报表,详见: http://fc8264.meibu.com )
      

  13.   

    ATGrid报表控件/WEB插件,支持asp .net jsp java phpATGrid报表控件/WEB插件[专业版],对EtCell进行了进行了全面的改革,将会彻彻底底的解决你的报表问题,让你开发达到从未有过的轻松和喜悦......  
    是专业的报表工具,提供了丰富的报表分析方法,具有可视化的报表设计器WinTable,更好的支持WEB报表打印,连续打印、报表套打,对aspx.net、asp、Java报表、jsp、pphp提供了专门的类库,方便WEB报表开发人员进行快速开发.
    网址:http://www.etcell.com/
    下载地址:http://www.etcell.com/download.asp?ID=51
    支持的报表功能如下: 
    1、支持主从报表 
    2、交叉报表 
    3、支持分组报表:小计、汇总自由设置 
    4、支持的套打报表,让套打简单灵活 
    5、支持分组报表的每组打印控制 
    6、支持连续打印,解决了票据打印的难题 
    7、支持自定义报表 
    8、支持MIS开发的各种开发工具:如VC、VB、Delphi、C Bulider、InterDev 
    9、支持WEB开发,FrontPage、InterDev、ASP.NEt、C# 
    10、EtCell内置支持VBScript脚本包括事件 
    11、在WEB上支持VBScript、JavaScript脚本 
    12、支持URL连接 
    13、支持的WEB服务器:NT的WEB服务器、Linux、Unix、WebLogic、TOMCAT、IIS; 
    14、在MIS开发中直接支持数据库,让程序开发更方便快捷
    15、WEB插件和浏览器紧密融合,完全成为浏览器的一个分子!
    16、一个页面安放多个ATGrid报表插件,再也不会出现其他控件的闪烁变动的效果!
    17、完全支持XML,后台程序可以通过XML控制报表的每一部分!
    18、让WEB开发变的更加简单,在WEB页[html]可以不用写一行代码.......
    19、报表的单元格类型多大几十种,如:Text,Num,Button,Radio,CheckBox,Combox.....
    20、不但实现报表展示功能,更重要突破了报表在线编辑功能........
    21、和后端服务器程序的交互更加简单...............
    22、可以把多个ATGrid控件的数据打印到一起,在也不用担心页眉和页脚问题......
    功能多多,肯定会让你满意,不必再为选择报表控件发愁!!!