c# 微信账单导入合并

 微信导出账单只能导出三个月,多条记录进行合并

用法 点击按钮选择微信账单所在目录

c# 微信账单导入合并_第1张图片

// 定义一个静态字符串变量,用于存储用户选择的文件夹路径
public static string tpml1;

// 定义一个静态List,用于存储待处理的所有CSV文件路径
public static List filelist1 = new List();

// button1_Click是按钮点击事件的处理函数
private void button1_Click(object sender, EventArgs e)
{
    // 创建并初始化FolderBrowserDialog对象,用于让用户选择文件夹
    test.FolderBrowserDialog path = new test.FolderBrowserDialog();
    
    // 如果用户选择了文件夹并且点击了"确定"
    if (path.ShowDialog(this) == DialogResult.OK)
    {
        // 将用户选择的文件夹路径赋值给tpml1
        tpml1 = path.DirectoryPath;

        // 删除已存在的合并统计文件(如果存在)
        File.Delete(tpml1 + "\\微信账单合并统计.csv");

        // 调用递归方法Director1遍历指定目录及其子目录下所有的CSV文件,并将文件路径添加到filelist1中
        Director1(tpml1);

        // 创建StreamWriter对象,以追加模式打开新的“微信账单合并统计.csv”文件,并设置默认编码格式
        StreamWriter streamWriter = new StreamWriter(tpml1 + "\\微信账单合并统计.csv", append: true, Encoding.Default);

        // 定义CSV文件的表头信息
        string value = "交易时间,交易类型,交易对方,商品,收/支,金额(元),支付方式,当前状态,交易单号,商户单号,备注,其他\t,";
        
        // 将表头写入新文件
        streamWriter.WriteLine(value);

        // 遍历收集到的所有CSV文件路径
        foreach (string item1 in filelist1)
        {
            // 获取当前文件名
            String filePath = @item1;
            int lastIndex = filePath.LastIndexOf("\\");
            String fileName = filePath.Substring(lastIndex + 1);

            // 设置从第18行开始读取数据
            int startFromLine = 18;

            // 在label1控件上显示当前处理的文件名
            label1.Text = fileName;
            Application.DoEvents(); // 让界面立即刷新

            // 使用FileStream和StreamReader打开并读取当前CSV文件
            using (FileStream stream = new FileStream(item1, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (StreamReader reader = new StreamReader(stream, Encoding.Default))
                {
                    for (int i = 0; !reader.EndOfStream; i++)
                    {
                        // 当读取到第18行及以后时,读取该行内容并将其与文件名一起写入合并后的文件
                        if (i + 1 >= startFromLine)
                        {
                            string line = reader.ReadLine();
                            streamWriter.WriteLine(line + "," + fileName);
                        }
                        else
                        {
                            // 跳过前16行
                            reader.ReadLine();
                        }
                    }
                }
            }
        }

        // 标记处理完成
        label1.Text = "完成";
        Application.DoEvents(); // 让界面立即刷新

        // 关闭StreamWriter以释放资源
        streamWriter.Close();
    }
}

// 递归遍历指定目录及其子目录下的所有CSV文件,并将文件路径加入到filelist1中
private void Director1(string dir)
{
    DirectoryInfo d = new DirectoryInfo(dir);
    FileSystemInfo[] fsinfos = d.GetFileSystemInfos();

    foreach (FileSystemInfo fsinfo in fsinfos)
    {
        // 如果是目录,则递归调用Director1方法
        if (fsinfo is DirectoryInfo)
        {
            Director1(fsinfo.FullName);
        }
        // 如果是CSV文件,则将文件路径添加到filelist1中
        else if (fsinfo.Extension == ".csv")
        {
            filelist1.Add(fsinfo.FullName);
        }
    }
}

 //有什么需要的,放假期间可以免费开发

//感谢大家的点赞,收藏,转发,关注 

你可能感兴趣的:(软件使用,c#,微信)