解析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

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和