C# 多个CSV文件合并成一个文件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        string FileName = string.Empty;
        DataTable dtExcelData;
        public Form1()
        {
            InitializeComponent();
        }

        private void bthChose_Click(object sender, EventArgs e)
        {
            OpenFileDialog opd = new OpenFileDialog();//实例化选择打开窗口对象
            opd.Multiselect = false;//定义不允许多选
            opd.Filter = "(*.*)|*.csv";//设置可以选择所有文件
            if (opd.ShowDialog() == DialogResult.OK)
            {
                //写入自己的代码
                txtFileName.Text = opd.FileName;
                FileName = opd.FileName;

            }
            opd.Dispose();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string path = "";
            string fname = "";
            if (FileName.Length <= 0)
            {
                MessageBox.Show("请上传文件");
                return;
            }

            else if (System.IO.Path.GetExtension(FileName) != ".csv")
            {
                MessageBox.Show("请上传csv格式文件");
                return;
            }
            else
            {
                path = FileName.Substring(0, FileName.LastIndexOf("\\") + 1);
              //  fname = FileName.Substring(FileName.LastIndexOf("\\") + 1);    
            }
            GetDate(path);
        }


        public void GetDate(string path)
        {
            try
            {
                DataGridView dgv = new DataGridView();

                dgv.RowHeadersVisible = true;
                dgv.Columns.Clear();
                dgv.Columns.Add("Sort", "Sort");
                dgv.Columns.Add("TN", "TN");
                dgv.Columns.Add("FileName", "FileName");
                string[] FileNameList = Directory.GetFiles(path);
                Array.Sort(FileNameList,new TSort() );
              
             
                int i = 0;
                foreach (String filePath in FileNameList)
                {
                    i++;
                
                    string fname = filePath.Substring(FileName.LastIndexOf("\\") + 1);   
                    StreamReader sr = new StreamReader(filePath);
                    while (true)
                    {
                        String strData = sr.ReadLine();
                        if (!String.IsNullOrEmpty(strData))
                        {
                            String[] strValue = strData.Split(',');
                            int index = dgv.Rows.Add();
                            DataGridViewRow dr = dgv.Rows[index];
                            dr.Cells[0].Value = i.ToString();
                            dr.Cells[1].Value = strValue[0];
                            dr.Cells[2].Value = fname;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                if (dgv.Rows.Count > 0)
                {
                   

                    ExcelHelper eh = new ExcelHelper();
                    eh.OutToExcelFromDataGridView("TNT", dgv, false);

                }
            } catch (Exception ex)
            {
                MessageBox.Show("抱歉出错了!"+ex.Message);
            }

        }

    }
}

using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsFormsApplication1
{
    public class TSort : System.Collections.IComparer
    {
        public int Compare(object x, object y)
        {
            string s1 = (string)x;
            string s2 = (string)y;
            if (s1.Length > s2.Length) return 1;
            if (s1.Length < s2.Length) return -1;
            for (int i = 0; i < s1.Length; i++)
            {
                if (s1[i] > s2[i]) return 1;
                if (s1[i] < s2[i]) return -1;
            }
            return 0;
        }
    } 

}

using System;
using System.IO;
using System.Data;
using System.Collections;
using System.Data.OleDb;
using System.Web;
using System.Windows.Forms;
using System.Text;

using Microsoft.Office.Interop.Excel;


/// <summary>
/// Excel操作类
/// </summary>
/// Microsoft Excel 11.0 Object Library
public  class ExcelHelper
{


    public  bool OutToExcelFromDataGridView(string title, DataGridView dgv, bool isShowExcel)
    {
        int titleColumnSpan = 0;//标题的跨列数
        string fileName = "tnt";//保存的excel文件名
        int columnIndex = 1;//列索引
        if (dgv.Rows.Count == 0)
            return false;
        /*保存对话框*/
        //SaveFileDialog sfd = new SaveFileDialog();
        //sfd.Filter = "导出Excel(*.xls)|*.xls";
        //sfd.FileName = title + DateTime.Now.ToString("yyyyMMddhhmmss");

        //if (sfd.ShowDialog() == DialogResult.OK)
        //{
        //    fileName = sfd.FileName;
            /*建立Excel对象*/
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            if (excel == null)
            {
                MessageBox.Show("无法创建Excel对象,可能您的计算机未安装Excel!");
                return false;
            }
            try
            {
                excel.Application.Workbooks.Add(true);
                excel.Visible = isShowExcel;
                /*分析标题的跨列数*/
                foreach (DataGridViewColumn column in dgv.Columns)
                {
                    if (column.Visible == true)
                        titleColumnSpan++;
                }
                /*合并标题单元格*/
                Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet;
                //worksheet.get_Range("A1", "C10").Merge();           
                worksheet.get_Range(worksheet.Cells[1, 1] as Range, worksheet.Cells[1, titleColumnSpan] as Range).Merge();
                /*生成标题*/
                excel.Cells[1, 1] = title;
                (excel.Cells[1, 1] as Range).HorizontalAlignment = XlHAlign.xlHAlignCenter;//标题居中
                //生成字段名称
                columnIndex = 1;
                for (int i = 0; i < dgv.ColumnCount; i++)
                {
                    if (dgv.Columns[i].Visible == true)
                    {
                        excel.Cells[2, columnIndex] = dgv.Columns[i].HeaderText;
                        (excel.Cells[2, columnIndex] as Range).HorizontalAlignment = XlHAlign.xlHAlignCenter;//字段居中
                        columnIndex++;
                    }
                }
                //填充数据             
                for (int i = 0; i < dgv.RowCount; i++)
                {
                    columnIndex = 1;
                    for (int j = 0; j < dgv.ColumnCount; j++)
                    {
                        if (dgv.Columns[j].Visible == true)
                        {
                            if (dgv[j, i].ValueType == typeof(string))
                            {
                                excel.Cells[i + 3, columnIndex] = "'" + dgv[j, i].Value.ToString();
                            }
                            else
                            {
                                excel.Cells[i + 3, columnIndex] = dgv[j, i].Value.ToString();
                            }
                            (excel.Cells[i + 3, columnIndex] as Range).HorizontalAlignment = XlHAlign.xlHAlignLeft;//字段居中
                            columnIndex++;
                        }
                    }
                }
                worksheet.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            }
            catch { }
            finally
            {
                excel.Quit();
                excel = null;
                GC.Collect();
            }
            //KillProcess("Excel");
            return true;
        //}
        //else
        //{
        //    return false;
        //}
    }
    private static void KillProcess(string processName)//杀死与Excel相关的进程
    {
        System.Diagnostics.Process myproc = new System.Diagnostics.Process();//得到所有打开的进程
        try
        {
            foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcessesByName(processName))
            {
                if (!thisproc.CloseMainWindow())
                {
                    thisproc.Kill();
                }
            }
        }
        catch (Exception Exc)
        {
            throw new Exception("", Exc);
        }
    }

   

}

原文地址:https://www.cnblogs.com/zhang9418hn/p/2797298.html