我正在尝试将CSV加载到数据表中,目前使用它的代码只会加载前两列数据。但是有些行有7列。我不认为这是用正确的CSV语法格式化的,但我相信有足够的信息来提取我需要的东西。 我希望将所有信息都放入数据网格中,然后将其视为打开Excel或类似程序,以便我可以访问各个单元格以获取所需信息。 拉入CSV的示例代码:
Private Sub ReadCSV_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ABInfo = GetCsvData("C:\epds\WIP\", "test2.csv")
Bind_Grid_ABInfo(ABInfo)
End Sub
Public Sub Bind_Grid_ABInfo(ByVal DT As DataTable)
Try
DGABInfo.DataSource = DT
DGABInfo.Refresh()
Catch ex As Exception
End Try
End Sub
Public Function GetCsvData(ByVal strFolderPath As String, ByVal strFileName As String) As DataTable
Try
Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFolderPath & ";Extended Properties=""text;HDR=yes;FMT=Delimited"";"
Dim conn As New OleDbConnection(strConnString)
Try
conn.Open()
Dim cmd As New OleDbCommand("SELECT * FROM [" & strFileName & "]", conn) '("SELECT * FROM [" & strFileName & "]", conn)
Dim da As New OleDbDataAdapter()
da.SelectCommand = cmd
Dim ds As New DataSet()
da.Fill(ds)
da.Dispose()
Return ds.Tables(0)
Catch
Return Nothing
Finally
conn.Close()
End Try
Catch ex As Exception
End Try
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Close()
Me.Dispose()
End Sub
这里是示例csv ---我不知道如何保持格式化
Process,Quote
File Name,project_10_-_freeform_cover
Project Name,Project 10 - Freeform Cover
Customer Id,1234567
Dealer,dealer
Dealer Name,name
Dealer Telephone,1234567890
Dealer Mobile,
Dealer Email,e@mail.com
Dealer Address,address
Distributor Name,dist
Distributor,dist
Distributor Address,address
Distributor Telephone,1234567890
Distributor Email,e@mail.com
Customer Name,name
Customer Telephone,1234567890
Customer Address,address
Description,L shape pool with slide
Comments,
Measurement Unit,inches
Cover Type,Safety
Pool Shape,Freeform
Cover Color,Blue
Cover Material,Standard Mesh
Grid Size,3 x 3
Replacement,No
Deck Type,Concrete
Deck Width,Full 3' of decking around all sides of the pool.
Coping Type,Concrete
Coping Width,12.0,1' 0"
Perimeter Padding,No
Warnings,None.
A-B Length,401.0,33' 5"
Feature,AB
Type,
Removable,No
Number of points,2
Line Length,401.0,33' 5"
Point,A,B,X,Y,Label,Type
1,,,0.0,0.0,A,Position
2,,,401.0,0.0,B,Position
Feature,Pool
Number of points,25
Calculated Length,467.1,38' 11.1"
Calculated Width,348.4,29' 0.4"
Calculated Perimeter,1386.7,115' 6.7"
Point,A,B,X,Y,Label,Type
1,375.0,61.0,371.2,53.2,,A-B
2,357.0,66.0,354.0,46.3,,A-B
3,190.0,221.0,184.6,44.9,,A-B
4,79.0,341.0,63.3,47.3,,A-B
5,52.0,400.0,4.4,51.8,,A-B
6,73.0,412.0,-4.5,72.9,,A-B
7,146.0,430.0,-3.5,146.0,,A-B
8,165.0,438.0,-4.8,164.9,,A-B
9,191.0,449.0,-5.4,190.9,,A-B
10,210.0,457.0,-4.9,209.9,,A-B
11,341.0,530.0,-4.8,341.0,,A-B
12,356.0,517.0,25.2,355.1,,A-B
13,379.0,531.0,28.0,378.0,,A-B
14,396.0,542.0,29.7,394.9,,A-B
15,401.0,520.0,63.8,395.9,,A-B
16,408.0,497.0,100.1,395.5,,A-B
17,390.0,481.0,101.7,376.5,,A-B
18,371.0,464.0,103.7,356.2,,A-B
19,372.0,442.0,129.5,348.7,,A-B
20,318.0,391.0,136.0,287.5,,A-B
21,278.0,354.0,140.6,239.8,,A-B
22,305.0,314.0,193.6,235.7,,A-B
23,436.0,234.0,369.3,231.8,,A-B
24,408.0,159.0,376.5,157.1,,A-B
25,397.0,130.0,375.9,127.6,,A-B
Feature,Slide
Type,Obstacle
Removable,No
Number of points,4
Line Length,64.0,5' 4.0"
Point,A,B,X,Y,Label,Type
1,146.0,430.0,-3.5,146.0,,A-B
2,165.0,438.0,-4.8,164.9,,A-B
3,191.0,449.0,-5.4,190.9,,A-B
4,210.0,457.0,-4.9,209.9,,A-B
Cross Pool Measurement,Cross Measurement 1
Measured Length,381.0,31' 9"
Calculated Length,381.4,31' 9.4"
Point,A,B,X,Y,Label,Type,Feature,Point
1,165.0,438.0,-4.8,164.9,8,Existing,Pool,8
2,408.0,159.0,376.5,157.1,24,Existing,Pool,24
Cross Pool Measurement,Cross Measurement 2
Measured Length,347.0,28' 11"
Calculated Length,348.6,29' 0.6"
Point,A,B,X,Y,Label,Type,Feature,Point
1,401.0,520.0,63.8,395.9,15,Existing,Pool,15
2,79.0,341.0,63.3,47.3,4,Existing,Pool,4
答案 0 :(得分:1)
如果您提前知道要导入的格式,您执行,那么您可以执行此类操作。根据您当前的数据,10列将足以托管数据文件。因此,我只需将每个"数据列"在GridviewColumn中。
抱歉这是c#,而不是vb.net
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
namespace CsvToDataGridView_47289838
{
public partial class Form1 : Form
{
DataGridView dgv = new DataGridView();
BindingList<dgvEntry> dgvdata = new BindingList<dgvEntry>();
string filePath = @"M:\StackOverflowQuestionsAndAnswers\CsvToDataGridView_47289838\SampleData.txt";
public Form1()
{
InitializeComponent();
initDGV();
addData();
}
private void addData()
{
using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath))
{
string currentLine = string.Empty;
while ((currentLine = sr.ReadLine()) != null)
{
dgvEntry entry = new CsvToDataGridView_47289838.dgvEntry();
List<string> splitted = currentLine.Split(',').ToList();
for (int i = 0; i < splitted.Count; i++)
{
switch (i)
{
case 0:
entry.col1 = splitted[i];
break;
case 1:
entry.col2 = splitted[i];
break;
case 2:
entry.col3 = splitted[i];
break;
case 3:
entry.col4 = splitted[i];
break;
case 4:
entry.col5 = splitted[i];
break;
case 5:
entry.col6 = splitted[i];
break;
case 6:
entry.col7 = splitted[i];
break;
case 7:
entry.col8 = splitted[i];
break;
case 8:
entry.col9 = splitted[i];
break;
case 9:
entry.col10 = splitted[i];
break;
default:
break;
}
}
dgvdata.Add(entry);
}
}
}
private void initDGV()
{
dgv.Dock = DockStyle.Fill;
this.Controls.Add(dgv);
dgv.DataSource = dgvdata;
}
}
public class dgvEntry
{
public string col1 { get; set; }
public string col2 { get; set; }
public string col3 { get; set; }
public string col4 { get; set; }
public string col5 { get; set; }
public string col6 { get; set; }
public string col7 { get; set; }
public string col8 { get; set; }
public string col9 { get; set; }
public string col10 { get; set; }
}
}