作者lancelet (修行非為絕情)
看板Visual_Basic
標題[.NET] VB如何分割資料
時間Thu Jan 7 22:11:31 2010
此為應用程式
目前排列完成後,若要"等分"切割(橫切)該如何處理?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim matrixnumber As Double
If TextBox7.Text = "" Then
Return
ElseIf TextBox5.Text = "" Then
Return
ElseIf TextBox6.Text = "" Then
Return
ElseIf TextBox1.Text = "" Then
Return
ElseIf TextBox2.Text = "" Then
Return
ElseIf TextBox3.Text = "" Then
Return
ElseIf TextBox4.Text = "" Then
Return
End If
'參與計算的每一儲存格不得為空
matrixnumber = Int(TextBox7.Text) / Int(TextBox5.Text) /
Int(TextBox6.Text)
If Int(matrixnumber) <> matrixnumber Then
MsgBox("行數與列數搭配總量後無法形成矩陣")
Return
End If
Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "txt files (*.txt)|*.txt"
saveFileDialog1.Title = "選擇儲存輸出檔位置"
saveFileDialog1.InitialDirectory = "D:\"
saveFileDialog1.RestoreDirectory = True
If saveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim sw As New StreamWriter(saveFileDialog1.FileName)
Dim m As Integer
Dim n As Integer
Dim total As Integer
m = Int(TextBox5.Text)
n = Int(TextBox6.Text)
total = Int(TextBox7.Text)
Dim blocknumber As Integer
blocknumber = total / (m * n)
Dim Initial As Integer
Initial = Int(TextBox4.Text)
Dim i_row As Integer
Dim i_column As Integer
Dim i_block As Integer
For i_block = 1 To blocknumber Step 1
For i_column = 1 To m Step 1
Initial = Int(TextBox4.Text) + (i_column - 1) + (i_block - 1) * m * n
For i_row = 1 To n Step 1
sw.Write(TextBox3.Text)
sw.Write(Format((Initial + (i_row - 1) * m), "000000000"))
sw.Write(" ")
Next i_row
sw.WriteLine("")
Next i_column
Next i_block
sw.Flush()
sw.Close()
End If
End Sub
End Class
輸出結果如下:
DX000000001 DX000000006 DX000000011 DX000000016
DX000000002 DX000000007 DX000000012 DX000000017
DX000000003 DX000000008 DX000000013 DX000000018
DX000000004 DX000000009 DX000000014 DX000000019
DX000000005 DX000000010 DX000000015 DX000000020
DX000000021 DX000000026 DX000000031 DX000000036
DX000000022 DX000000027 DX000000032 DX000000037
DX000000023 DX000000028 DX000000033 DX000000038
DX000000024 DX000000029 DX000000034 DX000000039
DX000000025 DX000000030 DX000000035 DX000000040
輸出的資料為上面的矩陣,請問該怎麼切割(橫切)?
例如兩等分,或五等分
切完後該怎麼自動依序存檔?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.149.193
推 Yaiba:真抱歉...看不懂... 01/08 14:09
※ 編輯: lancelet 來自: 220.130.149.193 (01/08 15:29)
推 Yaiba:是指...換行? 01/08 15:33
推 meto000:像上面那樣就叫兩等份的意思嗎?五等份就8個作單位? 01/08 16:01
→ lancelet:兩等分是指從 05 21這兩列中間切開成兩個檔案 01/09 15:16
→ lancelet:5等分就是把上面10列兩列兩列切成5個檔案 01/09 15:17
推 Yaiba:嗯...那你就用陣列先存下來,不就有數量了~(一行存一格就好) 01/09 20:32