6 月 22 2006
[VB.Net] 將 DataSet 匯出成 CSV 檔
剛剛弄出來的東西.
DsExport.vb :
Public Class DsExport
Public Shared Function Export(ByVal ds As DataSet, _
ByVal dtName As String, _
ByVal colList() As String, _
ByVal colValue() As Integer) As String
Dim header As String = ""
Dim body As String = ""
Dim record As String = ""
For Each col As String In colList
header = header & Chr(34) & col & Chr(34) & ","
Next
header = header.Substring(0, header.Length - 1)
For Each row As DataRow In ds.Tables(dtName).Rows
Dim arr() As Object = row.ItemArray()
For Each i As Integer In colValue
If arr(i).ToString().IndexOf(",") > 0 Then
record = record & Chr(34) & arr(i).ToString() & Chr(34) & ","
Else
record = record & arr(i).ToString() & ","
End If
Next
body = body & record.Substring(0, record.Length - 1) & vbCrLf
record = ""
Next
Return header & vbCrLf & body
End Function
End Class
呼叫方式:
Private Sub BtnExport_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles BtnExport.Click
Dim colList() As String = {"CSV表頭1", "CSV表頭2", "CSV表頭3"}
"顯示順序: SQL query 刮出來的欄位0, 4, 2
Dim colValue() As Integer = {0, 4, 2}
Dim strData As String = _
DsExport.Export(DataSet 變數名稱, _
"DataSet 變數中的 DataTabel 名稱", _
colList, colValue)
Dim binData() As Byte = System.Text.Encoding.Default.GetBytes(strData)
Response.Clear()
Response.AddHeader("Content-Type", "application/vnd.ms-access")
Response.AddHeader("Content-Disposition", "inline;filename=檔案名稱.csv")
Response.BinaryWrite(binData)
Response.End()
End Sub






1 月 4 2010
[C#] 取得 wav 檔案格式
前陣子,在工作上剛好需要對 wav 檔案格式進行判定,可是 NAudio 製作出來的格式用來作判斷又有錯誤,所以土法煉鋼寫了一個小 class:
using System; using System.Collections.Generic; using System.Text; using System.IO; class WavInfo { private String _Error; public String Error { get { return this._Error; } } private Boolean _PCM; public Boolean PCM { get { return this._PCM; } } private uint _Channel; public uint Channel { get { return this._Channel; } } private uint _SampleRate; public uint SampleRate { get { return this._SampleRate; } } private uint _BitsPerSample; public uint BitsPerSample { get { return this._BitsPerSample; } } private uint _ByteRate; public uint ByteRate { get { return this._ByteRate; } } private uint _BlockAlign; public uint BlockAlign { get { return this._BlockAlign; } } public WavInfo(String FileName) { try { FileStream FS = File.OpenRead(@FileName); Byte[] ReadTmp = new Byte[36]; FS.Read(ReadTmp, 0, 36); FS.Close(); if (BitConverter.ToUInt16(ReadTmp, 20) == 1) { this._PCM = true; } this._Channel = BitConverter.ToUInt16(ReadTmp, 22); this._SampleRate = BitConverter.ToUInt32(ReadTmp, 24); this._BitsPerSample = BitConverter.ToUInt16(ReadTmp, 34); this._ByteRate = this._Channel * this._SampleRate * this._BitsPerSample / 8; this._BlockAlign = this._Channel * this._BitsPerSample / 8; this._Error = String.Empty; } catch (Exception e) { this._Error = e.ToString(); } } }By Joe Horn • .NET 0 • Tags: .NET, Audio, C#, file, NAudio, PCM, wav