文号
t17372
阅读
40214
回复
15
收藏
10
【XXXXXX】直接通过文件结构生成xls文件
2009/07/16
IP:广东
这个是给某人做项目的时候写的。

原本是C#的,我改写成XXXXXX了,并且编译了一个dll。

--->>>>>>>>
attachment icon Excel_Writer.rar 4.40KB RAR 65次下载 <<<<<<<<---

测试通过,很好用

原文地址XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

调用方法:

Private Sub button1_Click_1(ByVal sender As Object, ByVal e As EventArgs)
    Dim excel As New ExcelWriter("e:\test.xls")
    excel.BeginWrite
    excel.WriteString(0, 0, "1")
    excel.WriteString(0, 1, "2")
    excel.WriteString(1, 0, "3")
    excel.WriteNumber(1, 1, 4)
    excel.WriteNumber(2, 1, 5)
    excel.EndWrite
End Sub


这个,要写多维数组到xls就简单了吧 = = 直接循环 嗯

下面是代码

Public Class Exel_Writer
    Dim _r As XXXXXXXXX.FileStream

    Public Function Init(ByVal strPath As String)
        _r = New XXXXXXXXX.FileStream(strPath, XXXXXXXXX.FileMode.OpenOrCreate)
        Return Nothing
    End Function

    Public Sub BeginWrite()
        Me._writeFile(New Short() {&H809, 8, 0, &H10, 0, 0})
    End Sub


    Private Function _writeFile(ByVal values As Short())
        Dim v As Short
        For Each v In values
            Dim b As Byte() = BitConverter.GetBytes(v)
            Me._r.Write(b, 0, b.Length)
        Next
        Return Nothing
    End Function

    Public Function EndWrite()
        Dim CS As Short() = New Short(2 - 1) {}
        CS(0) = 10
        Me._writeFile(CS)
        Me._r.Close()
        Return Nothing
    End Function

    Public Function WriteNumber(ByVal x As Short, ByVal y As Short, ByVal value As Double)
        Dim CS As Short() = New Short(5 - 1) {}
        CS(0) = &H203
        CS(1) = 14
        CS(2) = x
        CS(3) = y
        Me._writeFile(CS)
        Dim b As Byte() = BitConverter.GetBytes(value)
        Me._r.Write(b, 0, b.Length)
        Return Nothing
    End Function

    Public Function WriteString(ByVal x As Short, ByVal y As Short, ByVal value As String)
        Dim b As Byte() = System.Text.Encoding.Default.GetBytes(value)
        Dim CS As Short() = New Short(6 - 1) {}
        CS(0) = &H204
        CS(1) = CShort((b.Length + 8))
        CS(2) = x
        CS(3) = y
        CS(5) = CShort(b.Length)
        Me._writeFile(CS)
        Me._r.Write(b, 0, b.Length)
        Return Nothing
    End Function
End Class


附:原C#代码



ex.png
93°作者
17年6个月前IP:未同步
125846
2楼
……
好吧,button1是囧3程序特色
引用
评论
93°作者
17年6个月前IP:未同步
127126
6楼
话说……没人鸟我么 = =
引用
评论
93°作者
17年5个月前IP:未同步
140707
10楼
引用第9楼warmonkey于2009-08-15 10:52发表的  :
有C++版的吗?要是有能在单片机上运行的更好

把XXXXXXXXX换成fputc (pia)就可以了。。。。。
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的