0


C#win form解决导入CSV文件数据缺失问题

winform CSV文件入库数据缺失

publicstringTransferCSVData(string csvFile,string tablename,string connectionString){try{DataTable dataTable =newDataTable();string[] columnNames = File.ReadLines(csvFile, Encoding.GetEncoding("GBK")).First().Split(',');//设置了编码格式为GBKforeach(string columnName in columnNames){
                    dataTable.Columns.Add(columnName,typeof(string));}foreach(string line in File.ReadLines(csvFile, Encoding.GetEncoding("GBK")).Skip(1))//设置了编码格式为GBK{string[] values = line.Split(',');DataRow dataRow = dataTable.NewRow();for(int i =0; i < values.Length; i++){
                        dataRow[i]= values[i];}
                    dataTable.Rows.Add(dataRow);}// 下面是您给出的部分代码int rowsnum = dataTable.Rows.Count;
                progressBar1.Maximum = rowsnum;using(SqlConnection connection =newSqlConnection(connectionString)){
                    connection.Open();using(SqlBulkCopy bulkCopy =newSqlBulkCopy(connection)){
                        bulkCopy.BulkCopyTimeout =666666666;
                        bulkCopy.SqlRowsCopied +=newSystem.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
                        bulkCopy.BatchSize =100;//每次传输的行数
                        bulkCopy.NotifyAfter =100;//进度提示的行数
                        bulkCopy.DestinationTableName = tablename;//目标表
                        bulkCopy.WriteToServer(dataTable);
                        bulkCopy.Close();//关闭对象
                        richTextBox1.SelectionColor = Color.Blue;
                        richTextBox1.AppendText(System.IO.Path.GetFileName(csvFile)+"导入完成!!!!\n");return"TAG";}}}catch(Exception ex){// 异常处理部分
                System.Windows.Forms.MessageBox.Show(ex.Message);
                richTextBox1.SelectionColor = Color.Red;
                richTextBox1.AppendText(System.IO.Path.GetFileName(csvFile)+"导入失败!!!!"+"\n");
                richTextBox2.SelectionColor = Color.Red;
                richTextBox2.AppendText(DateTime.Now.ToString("HH:mm:ss  ")+"导入异常"+"\n");if(ex.Message =="与源或目标中的任意列均不匹配。"){
                    richTextBox1.AppendText("详细失败原因如下:导入的EXCEL的单元格列数比设定的列数多,请检查EXCEL的数据是否异常\n");}else richTextBox1.AppendText("详细失败原因如下:"+ ex.Message +"\n");
                Application.DoEvents();return"";}}publicstringTransferCSVData0(string csvFile,string tablename,string connectionString){try{DataTable dataTable =newDataTable();string[] columnNames = File.ReadLines(csvFile).First().Split(',');foreach(string columnName in columnNames){
                    dataTable.Columns.Add(columnName,typeof(string));}foreach(string line in File.ReadLines(csvFile).Skip(1)){string[] values = line.Split(',');DataRow dataRow = dataTable.NewRow();for(int i =0; i < values.Length; i++){
                        dataRow[i]= values[i];}
                    dataTable.Rows.Add(dataRow);}int rowsnum = dataTable.Rows.Count;
                progressBar1.Maximum = rowsnum;using(SqlConnection connection =newSqlConnection(connectionString)){
                    connection.Open();using(SqlBulkCopy bulkCopy =newSqlBulkCopy(connection)){
                        bulkCopy.BulkCopyTimeout =666666666;
                        bulkCopy.SqlRowsCopied +=newSystem.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
                        bulkCopy.BatchSize =100;//每次传输的行数
                        bulkCopy.NotifyAfter =100;//进度提示的行数
                        bulkCopy.DestinationTableName = tablename;//目标表
                        bulkCopy.WriteToServer(dataTable);
                        bulkCopy.Close();//关闭对象
                        richTextBox1.SelectionColor = Color.Blue;
                        richTextBox1.AppendText(System.IO.Path.GetFileName(csvFile)+"导入完成!!!!\n");return"TAG";}}}catch(Exception ex){
                System.Windows.Forms.MessageBox.Show(ex.Message);
                richTextBox1.SelectionColor = Color.Red;
                richTextBox1.AppendText(System.IO.Path.GetFileName(csvFile)+"导入失败!!!!"+"\n");
                richTextBox2.SelectionColor = Color.Red;
                richTextBox2.AppendText(DateTime.Now.ToString("HH:mm:ss  ")+"导入异常"+"\n");if(ex.Message =="与源或目标中的任意列均不匹配。"){
                    richTextBox1.AppendText("详细失败原因如下:导入的EXCEL的单元格列数比设定的列数多,请检查EXCEL的数据是否异常\n");}else richTextBox1.AppendText("详细失败原因如下:"+ ex.Message +"\n");
                Application.DoEvents();return"";}}
标签: c# 开发语言

本文转载自: https://blog.csdn.net/qq_43001132/article/details/136071618
版权归原作者 IT-例子 所有, 如有侵权,请联系我们删除。

“C#win form解决导入CSV文件数据缺失问题”的评论:

还没有评论