Code Bye

一枚怎么把读取到的Excel中的按本人想要的方法拆分

上头叫本人做个小工具,但是这里就不会了。
就是怎么把读取到的Excel中的按本人想要的方法拆分?
本人已经做到把EXCEL的数据读取到了data grid view1 了,但是知道怎么拆分里面每行的数据。
拆分好之后还要把没用的数据忽略掉,最后插入数据库。
前面上头教本人做了怎么分拆一行数据的,但是读取到data grid view1怎么分拆?这个不懂。
private void button1_Click(object sender, EventArgs e)
{
string A = “30231132 0530164155 621700*********7845 建设银行 5980.00 -26.00 5954.00 000001000524 573059 有线销售点终端(P 消费”;   //主要是要拆这样的数据
A = textBox1.Text;
A=A.Trim();                             //删除头尾部的空格
//A = A.Replace(”      “, ” “);            //将空格换成一个空格,但被换的空格不能多与3个,否则无效
A = Regex.Replace(A.Trim(), “\s+”, ” “); //应用正则表达式  把“      ”内多个空格字符换成“ ”一个空格
string[] X = A.Split(” “);              //把X定义为‘ ’空格,split()函数可以把指定的特殊字符截成多段
for (int a = 0; a < X.Length;a++ )
{
//MessageBox.Show(X[a]);
listBox1.Items.Add(X[a]);
}
return;
}
上面是要拆分其中的一条数据已经包括方法了
但是把Excel导入到data grid view1 的几十行数据怎么按那个方法拆,最后还要插入到数据库。
下面是本人的全部代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace WindowsFormsApplication41
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataTable dt = new DataTable();
string connString = “server = (local);database = shoucao;user id = zxf;password = zxf123”;
SqlConnection conn;
private void Form1_Load(object sender, EventArgs e)
{

}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string A = “30231132 0530164155 621700*********7845 建设银行 5980.00 -26.00 5954.00 000001000524 573059 有线销售点终端(P 消费”;   //主要是要拆这样的数据
A = textBox1.Text;
A=A.Trim();                             //删除头尾部的空格
//A = A.Replace(”      “, ” “);            //将空格换成一个空格,但被换的空格不能多与3个,否则无效
A = Regex.Replace(A.Trim(), “\s+”, ” “); //应用正则表达式  把“      ”内多个空格字符换成“ ”一个空格
string[] X = A.Split(” “);              //把X定义为‘ ’空格,split()函数可以把指定的特殊字符截成多段
for (int a = 0; a < X.Length;a++ )
{
//MessageBox.Show(X[a]);
listBox1.Items.Add(X[a]);
}
return;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)//打开文件操作提示框
{
System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();
if (fd.ShowDialog() == DialogResult.OK)
{
string fileName = fd.FileName;
bind(fileName);
}
}
private void bind(string fileName)
{
string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;” +
“Data Source=” + fileName + “;” +
“Extended Properties=”Excel 8.0; HDR=Yes; IMEX=1″”;
OleDbDataAdapter da = new OleDbDataAdapter(“select * from [sheet1$]”, strConn);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
dt = ds.Tables[0];
this.dataGridView1.DataSource = dt;
}
catch (Exception err)
{
MessageBox.Show(“操作失败!” + err.ToString());
}
}
}
}
下面是winform的图片

还有是要拆的EXCEL文件的数据
终端编号     交易日期时间   主账号                  发卡行                          交易金额      商户费用          结算金额  系统参考号     系统跟踪号   交易渠道          交易类型
30231132    0530164155      621700*********7845     建设银行                         5980.00        -26.00           5954.00  000001000524  573059        有线销售点终端(P  消费
30231132    0530165149      621626*********8313     平安银行                            0.00          0.00              0.00  000001000529  575973        有线销售点终端(P  余额查询
30231132    0530165400      621467*********6055     建设银行                            0.00          0.00              0.00  000001000531  580118        有线销售点终端(P  余额查询
30231132    0530165527      621467*********6055     建设银行                         1500.00         -9.45           1490.55  000001000532  584217        有线销售点终端(P  消费
30231132    0530165621      621626*********8313     平安银行                         3900.00        -24.57           3875.43  000001000533  579998        有线销售点终端(P  消费
30231133    0530124525      621626*********3740     平安银行                         5980.00        -26.00           5954.00  000001000646  421241        有线销售点终端(P  消费
30231133    0530135305      621700*********2133     建设银行                         7180.00        -26.00           7154.00  000001000650  453092        有线销售点终端(P  消费
30231133    0530184852      439225******3576        招商银行深圳分行                 5980.00        -26.00           5954.00  000001000651  671038        有线销售点终端(P  消费
30231137    0530191934      622575******3107        招商银行                         5980.00        -26.00           5954.00  000001000726  691764        有线销售点终端(P  消费
30231137    0530192019      622575******3107        招商银行                         5980.00        -26.00           5954.00  000001000727  691394        有线销售点终端(P  消费
30231137    0530192139      622575******3107        招商银行                         5980.00        -26.00           5954.00  000001000728  699003        有线销售点终端(P  消费
30231137    0530192233      458123******7401        交通银行                         5980.00        -26.00           5954.00  000001000729  697646        有线销售点终端(P  消费
30231138    0530171907      621485******2205        招商银行                         5980.00        -26.00           5954.00  000002000796  597384        有线销售点终端(P  消费
30231139    0530154520      356868******2211        平安银行股份有限公司             5980.00        -26.00           5954.00  000002000905  535485        有线销售点终端(P  消费
30231142    0530170931      621700*********8056     建设银行                         5980.00        -26.00           5954.00  000012000795  592112        有线销售点终端(P  消费
30231142    0530195234      621226*********9079     工商银行深圳分行                 5980.00        -26.00           5954.00  000012000796  021257        有线销售点终端(P  消费
30231143    0530183720      625907******6495        中国银行                         7680.00        -26.00           7654.00  000001000520  660916        有线销售点终端(P  消费
30231149    0530144900      439225******8307        招商银行深圳分行                 6280.00        -26.00           6254.00  000002000426  488691        有线销售点终端(P  消费
30231149    0530150951      622202*********6769     工商银行深圳分行                 5980.00        -26.00           5954.00  000002000427  507936        有线销售点终端(P  消费
30231152    0530094404      622208*********6237     工商银行深圳分行                 5980.00        -26.00           5954.00  000003000848  311497        有线销售点终端(P  消费
30231152    0530141301      622848*********2170     农业银行                         5980.00        -26.00           5954.00  000003000849  465070        有线销售点终端(P  消费
30231152    0530173003      621700*********4729     建设银行                         4880.00        -26.00           4854.00  000003000850  611613        有线销售点终端(P  消费
30231154    0530194032      439226******0071        招商银行深圳分行                 5980.00        -26.00           5954.00  000002000596  007593        有线销售点终端(P  消费
30231155    0530111603      622228******1579        浦东发展                         1352.00         -8.52           1343.48  000002000767  367556        有线销售点终端(P  消费
30231155    0530181655      622575******2185        招商银行                          500.00         -3.15            496.85  000002000768  643788        有线销售点终端(P  消费
30231158    0530111612      622700*********0027     建设银行                         5980.00        -26.00           5954.00  000001000134  369918        有线销售点终端(P  消费
30231159    0530102018      622845*********4979     农业银行                         5980.00        -26.00           5954.00  000001000517  336656        有线销售点终端(P  消费
30231159    0530111541      628288******6976        工商银行深圳分行                 5980.00        -26.00           5954.00  000001000518  368926        有线销售点终端(P  消费
30231159    0530122211      621226*********4861     工商银行深圳分行                  950.00         -5.99            944.01  000001000519  403967        有线销售点终端(P  消费

解决方案

10

看了一下不是tab分割,貌似是固定长度分割不足补空格这种,那么你可以使用正则分割他 \s+
string[] splitArray = null;
try {
splitArray = Regex.Split(subjectString, @”\s+”, RegexOptions.Singleline);
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}

5

引用 6 楼 qq_35195625 的回复:

就是单个列中,那些数据是别人从别的工具导出来的

本人以前帮同事做过一个工具,是把从 sap 里面导出的 wms 导入 excel。
本人刚传到本人的下载里面,估计要过会儿才能看到。
本人试了下,能用。

5

加入断点,查看获取的一行的数据是以什么间隔的,看到你贴出类的像是\t,就可以var datas=line.Split(new[] { “\t” }, StringSplitOptions.RemoveEmptyEntries),分成多列

50

看你的代码使用的是ado.net读取,出来应该就是一个dt
那么你可以
foreach datarow row in dt.rows
{
string str=(string)row[0];//简单点写,本人就不判定nullvalue了

把你分割的代码放这里,上面的str就是一行值,至于分割的结果你是用list<T> 存,还是怎样就看你本人选择了(当然你说你想丢一些列,也看你本人怎么选择)
}

20

本人刚刚回复了一个编程操作 Excel 进程的问题。
http://bbs.csdn.net/topics/391975896?page=1#post-401293734
注意这是指桌面程序,例如wpf、winform程序中操作 excel。

10

1、单纯接受excel数据可以OleDb,具体可参考:http://www.cnblogs.com/Tsong/archive/2013/02/21/2920941.html
2、单行拆分用 line.Split(new[] { “\t”,” ” }, StringSplitOptions.RemoveEmptyEntries)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明一枚怎么把读取到的Excel中的按本人想要的方法拆分