我试图将CSV文件导入到我的C#站点并将其保存在数据库中。在做研究时,我了解了CSV解析,我试图实现这一点,但我遇到了一些麻烦。这里是我的代码的一部分至今:解析C#中的CSV文件时遇到的问题#
string fileext = Path.GetExtension(fupcsv.PostedFile.FileName);
if (fileext == ".csv")
{
string csvPath = Server.MapPath("~/CSVFiles/") + Path.GetFileName(fupcsv.PostedFile.FileName);
fupcsv.SaveAs(csvPath);
// Add Columns to Datatable to bind data
DataTable dtCSV = new DataTable();
dtCSV.Columns.AddRange(new DataColumn[2] { new DataColumn("ModuleId", typeof(int)), new DataColumn("CourseId", typeof(int))});
// Read all the lines of the text file and close it.
string[] csvData = File.ReadAllLines(csvPath);
// iterate over each row and Split it to New line.
foreach (string row in csvData)
{
// Check for is null or empty row record
if (!string.IsNullOrEmpty(row))
{
using (TextFieldParser parser = new TextFieldParser(csvPath))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
//Process row
string[] fields = parser.ReadFields();
int i = 1;
foreach (char cell in row)
{
dtCSV.NewRow()[i] = cell;
i++;
}
}
}
}
}
}
我不断收到错误“没有排在位置1”在“dtCSV.Rows [dtCSV.Rows.Count - 1] [i] =细胞;” 任何帮助将不胜感激,谢谢
将是所有变化如果可以发布整个例外,并且如果可能的话,链接到您尝试使用代码的csv文件时,效果会更好。 –
将该行添加到数据表中,然后将值分配给它的行。 –
该例外的第一部分是“在System.Data.dll中发生类型'System.IndexOutOfRangeException'的异常,但未在用户代码中处理”。不知道如何放csv文件,但它只有两行关闭数字 –