作者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
1F:推 Yaiba:真抱歉...看不懂... 01/08 14:09
※ 编辑: lancelet 来自: 220.130.149.193 (01/08 15:29)
2F:推 Yaiba:是指...换行? 01/08 15:33
3F:推 meto000:像上面那样就叫两等份的意思吗?五等份就8个作单位? 01/08 16:01
4F:→ lancelet:两等分是指从 05 21这两列中间切开成两个档案 01/09 15:16
5F:→ lancelet:5等分就是把上面10列两列两列切成5个档案 01/09 15:17
6F:推 Yaiba:嗯...那你就用阵列先存下来,不就有数量了~(一行存一格就好) 01/09 20:32