解析Csv文件并转化为DataTable(处理支付宝当面付账单)

2023-10-21 20:50

本文主要是介绍解析Csv文件并转化为DataTable(处理支付宝当面付账单),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在自己做一个小型对账系统,包括支付宝,微信,银联三个内容,因为支付宝当面付账单提供的接口是提供下载链接,然后下载一个压缩包,技术还没有那么高超,用代码解压,思路是:

1.通过接口,获取账单下载链接,通过下面代码访问网页,然后进行下载文件。
System.Diagnostics.Process.Start(url);
2.打开本地窗口,获取文件路径   
            string Route;  //路径            OpenFileDialog fileDialog = new OpenFileDialog();fileDialog.Multiselect = true;fileDialog.Title = "请选择文件";fileDialog.Filter = "所有文件(*.*)|*.*";if (fileDialog.ShowDialog() == DialogResult.OK){Route = fileDialog.FileName;try{zfb_dt = re.OpenCSVFile(Route);dgv1.DataSource = zfb_dt;label5.Text = "支付宝";mode.zfb_dt = zfb_dt;}catch (Exception ex){MessageBox.Show("选择文件格式不规范,请选择“业务明细”文件!");}}else{MessageBox.Show("未选择文件");}
ps:因为支付宝账单有两个文件,分别是:业务明细和业务明细(汇总),两个文件的Csv格式是不同的。
3.通过文件路径,解析Csv文件,转化为dataTabel
Csv文件格式:


代码如下

 public DataTable OpenCSVFile(string filepath){DataTable zfb_dt = new DataTable();bool blnFlag = true;DataColumn dc;DataRow dr;string[] aryline;StreamReader mysr = new StreamReader(filepath, System.Text.Encoding.Default);string strline;int a = 0;while ((strline = mysr.ReadLine()) != null){aryline = strline.Split(new char[] { ',' });int intColCount = aryline.Length;if (intColCount > 1)//列数超过1{//给datatable加上列名if (blnFlag){blnFlag = false;for (int i = 0; i < intColCount; i++){dc = new DataColumn(aryline[i].ToString());zfb_dt.Columns.Add(dc);}}//捞出Csv文件的列标题,但是在内容中不显示if (a == 1){//填充数据并加入到datatable中dr = zfb_dt.NewRow();for (int i = 0; i < intColCount; i++){dr[i] = aryline[i];}zfb_dt.Rows.Add(dr);}a = 1;}}//只显示datatable其中需要的几列字段DataTable dt = zfb_dt.DefaultView.ToTable(false, new string[] { "商户订单号", "商品名称", "业务类型", "商家实收(元)", "完成时间" });return dt;}

总结:主要就是将csv中的数据转化为特定编码的字符。然后每次读取一行,并找出想要的行,进行处理,循环保存为dataTable中的行。

如果大家有更好的方法,希望可以在评论中留下,相互学习,谢谢。

如果此博客对你有帮助或者还有什么疑问,大家都可以在评论中一起讨论,谢谢。

这篇关于解析Csv文件并转化为DataTable(处理支付宝当面付账单)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/256890

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个