这我在工作中需要时在网上找的一些代码 让后经过我的加工拿出来和大家分享一下



/*******从 
   txt文本文档中读取数据,然后在导入到Excel表中 
  
 
  

    使用 
   IO流从文本文档中读取数据,然后在读入到DataTable转入到Excel中********/ 
  
 
  

      
  
 
  

    //txt文本文档路径 
  
 
  

    txtpath = 
   "D:\\Trans_MA.txt"; 
  
 
  

    //读取文本文档的数据 
  
 
  

    StreamReader swtxt = 
   new StreamReader(txtpath ,Encoding .Default ); 
  
 
  

      
  
 
  

    //一、如果文档中有相同的数据列的话 
    必须声明每个列名,否则在输入到DataTable中有报出有相同列的错误,有多少列就添加多少列过去 
  
 
  

      
  
 
  
 
              //遍历文档中每行的数据 
  
 
  
 
               while ((txtfile = swtxt.ReadLine())!= null) 
  
 
  
 
               { 
  
 
  
 
                   txtLength++; 
  
 
  
 
                   txtdata = txtfile.Split("@".ToCharArray()); 
  
 
  
 
                   //新建行,行的列头,数据类型与 
   dataTable相同 
  
 
  
 
                   dr = dt.NewRow(); 
  
 
  
 
                   dr["公司代码 
   "] = txtdata[0]; 
  
 
  
 
                   dr["客户订单号 
   "] = txtdata[1]; 
  
 
  
 
                   dr["客户出货单号 
   "] = txtdata[2]; 
  
 
  
 
                   dr["盖章码 
   "] = txtdata[3]; 
  
 
  
 
                   dr["换货日期 
   "] = txtdata[4]; 
  
 
  
 
                   dr["序号 
   "] = txtdata[5]; 
  
 
  
 
                   dr["售達方代碼 
   "] = txtdata[6]; 
  
 
  
 
                   dr["送達方代号 
   "] = txtdata[7]; 
  
 
  
 
                   dr["货主货号 
   "] = txtdata[8]; 
  
 
  
 
                   if (txtdata[9].Trim() == "0") 
  
 
  
 
                   { 
  
 
  
 
                       dr["退换货标记 
   "] = 
   "退货 
   "; 
  
 
  
 
                   } 
  
 
  
 
                   else if (txtdata[9].Trim() == "1") 
  
 
  
 
                   { 
  
 
  
 
                       dr["退换货标记 
   "] = 
   "换货 
   "; 
  
 
  
 
                   } 
  
 
  
 
                   dr["单位 
   "] = txtdata[10]; 
  
 
  
 
                   dr["單位代碼 
   "] = txtdata[11]; 
  
 
  
 
                   dr["基本單位與單位之間的換算比 
   "] = txtdata[12]; 
  
 
  
 
                   dr["基本單位 
   "] = txtdata[13]; 
  
 
  
 
                   dr["数量 
   "] = txtdata[14]; 
  
 
  
 
                   dr["单价 
   "] = txtdata[15]; 
  
 
  
 
                   dr["折讓金額 
   "] = txtdata[16]; 
  
 
  
 
                   dr["折讓類型 
   "] = txtdata[17]; 
  
 
  
 
                   if (txtdata[18].Trim() == "0") 
  
 
  
 
                   { 
  
 
  
 
                       dr["赠品 
   "] = 
   "非赠品 
   "; 
  
 
  
 
                   } 
  
 
  
 
                   else if (txtdata[18].Trim() == "1") 
  
 
  
 
                   { 
  
 
  
 
                       dr["赠品 
   "] = 
   "赠品 
   "; 
  
 
  
 
                   } 
  
 
  
 
                   if (txtdata[19] == "") 
  
 
  
 
                   { 
  
 
  
 
                       dr["送达的时间要求 
   "] = 
   "NoTM"; 
  
 
  
 
                   } 
  
 
  
 
                   else 
  
 
  
 
                   { 
  
 
  
 
                       dr["送达的时间要求 
   "] = txtdata[18]; 
  
 
  
 
                   } 
  
 
  
 
                   dr["商品的生产日期要求 
   (起始)"] = txtdata[20]; 
  
 
  
 
                   dr["商品的生产日期要求 
   (终止)"] = txtdata[21]; 
  
 
  
 
                   dr["备注 
   "] = txtdata[22]; 
  
 
  
 
                 //把每列添加到 
   DataTable中 
  
 
  
 
                   dt.Rows.Add(dr); 
  
 
  
 
               } 
  
 
  
 
               
  
 
  
 
       //读入到 
   Excel表中就遇上面的大致相同了 
  
 
  
 
        
  
 
  
 
       Microsoft.Office.Interop.Excel. 
   Application myexcel = new Microsoft.Office.Interop.Excel.Application(); 
  
 
  

    myexcel.Visible = 
   true; 
  
 
  

    Microsoft.Office.Interop.Excel. 
   Workbooks myworkbooks = myexcel.Workbooks; 
  
 
  

    Microsoft.Office.Interop.Excel. 
   Workbook myworkbook = myworkbooks.Add(1); 
  
 
  

    Microsoft.Office.Interop.Excel. 
   Worksheet myworksheet =(Microsoft .Office.Interop.Excel.Worksheet)myworkbook.Worksheets[1]; 
  
 
  

    //设置显示多少行,列的数据汉字表头 
  
 
  

    Microsoft.Office.Interop.Excel. 
   Range myrange =myworksheet.get_Range("A1","W1"); 
  
 
  

      
   object[] objrow = { "公司代码 
   ", 
   "客户订单号 
   ", 
   "客户出货单号 
   ", 
   "盖章码 
   ", 
   "换货日期 
   ", 
   "序号 
   ", 
   "售達方代碼 
   ", 
   "送達方代号 
   ", 
   "货主货号 
   ", 
   "退换货标记 
   ", 
   "单位 
   ", 
   "單位代碼 
   ", 
   "基本單位與單位之間的換算比 
   ", 
   "基本單位 
   ", 
   "数量 
   ", 
   "单价 
   ", 
   "折讓金額 
   ", 
   "赠品 
   ", 
   "送达的时间要求 
   ", 
   "商品的生产日期要求 
   (起始)", 
   "商品的生产日期要求 
   (终止)", 
   "备注 
   "}; 
  
 
  

    myrange.Value2 = objrow; 
  
 
  

    //整行 
   excel的背景颜色 
                  
  
 
  

    myrange.Interior.ColorIndex = 4; 
  
 
  

    //设置整个单元格字体的颜色 
  
 
  

    myrange.Font.ColorIndex = 5; 
  
 
  

      
  
 
  

    myrange = myworksheet.get_Range( 
   "A2", System.Reflection.Missing.Value); 
  
 
  

    //Object[1001, 23] 设定 
   excel表中的 1001行和 23列 
  
 
  

    object[,] objectarr = 
   new Object[1001, 23];  
  
 
  
 
                   for (int i = 0; i < dt.Rows.Count-1; i++) 
  
 
  
 
                   {    
  
 
  
 
                       rowcount++; 
  
 
  
 
                       int col = rowcount - 1; 
  
 
  
 
                     //设定 
   Excel表中显示的列的情况 
  
 
  
 
                       objectarr[col, 0] = SelectCompanycode((dt.Rows[i]["公司代码 
   "]).ToString ()); 
  
 
  
 
                       objectarr[col, 1] = dt.Rows[i]["客户订单号 
   "]; 
  
 
  
 
                       objectarr[col, 2] = dt.Rows[i]["客户出货单号 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 3] = dt.Rows[i]["盖章码 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 4] = dt.Rows[i]["换货日期 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 5] = dt.Rows[i]["序号 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 6] = dt.Rows[i]["售達方代碼 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 7] = dt.Rows[i]["送達方代号 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 8] = dt.Rows[i]["货主货号 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 9] = dt.Rows[i]["退换货标记 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 10] = dt.Rows[i]["单位 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 11] = dt.Rows[i]["單位代碼 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 12] = dt.Rows[i]["基本單位與單位之間的換算比 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 13] = dt.Rows[i]["基本單位 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 14] = dt.Rows[i]["数量 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 15] = dt.Rows[i]["单价 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 16] = dt.Rows[i]["折讓金額 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 17] = dt.Rows[i]["折讓類型 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 18] = dt.Rows[i]["赠品 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 19] = dt.Rows[i]["送达的时间要求 
   "].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 20] = dt.Rows[i]["商品的生产日期要求 
   (起始)"].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 21] = dt.Rows[i]["商品的生产日期要求 
   (终止)"].ToString().Trim(); 
  
 
  
 
                       objectarr[col, 22] = dt.Rows[i]["备注 
   "].ToString().Trim(); 
  
 
  
 
                         
  
 
  

    myrange = myrange.get_Resize(1001, 23); 
  
 
  

    myrange.Value2 = objectarr; 
  
 
  

    myrange.EntireColumn.AutoFit(); 
  
 
  

    myexcel = 
   null; 
  
 
  

      
  
 
  

      
  
 
  

    // 二、如果 
   txt文本文档中没有相同的数据,就不需要在添加多少 行列了 可以通过遍历数据行列就可以了 
  
 
  

      
  
 
  

      
      //遍历文档中每行的数据 
  
 
  

      
   while ((txtfile = swtxt.ReadLine())!= null) 
  
 
  
 
      { 
  
 
  
 
      txtLength++; 
  
 
  
 
      txtdata = txtfile.Split("@".ToCharArray()); 
  
 
  

    if 
      (blnFlag)  
  
 
  

    { 
  
 
  

     blnFlag 
      =   false;  
  
 
  
 
      //获取长度 
  
 
  
 
       intColCount   =   txtdata.Length; 
  
 
  

     for 
      (int   i   =   0;   i   <   txtdata.Length; 
      i++)  
  
 
  
 
      {  
  
 
  
 
          //添加列 
  
 
  
 
            mydc   =   new   DataColumn(txtdata [i]); 
  
 
  
 
            //将添加的列加入到 
   DataTable中 
  
 
  
 
            mydt.Columns.Add(mydc);  
  
 
  
 
        }                                          
  
 
  
 
      }                                 
  
 
  

      
  
 
  
 
        //新创建行,行的列头、数据类型与 
   DataTable相同 
  
 
  
 
        Mydr   =   mydt.NewRow();  
  
 
  
 
        for   (int   i   =   0;   i   <   intColCount;   i++)  
  
 
  
 
         {  
  
 
  
 
           // 给新行的数据赋值 
  
 
  
 
          Mydr[i]   =   txtdata [i]; 
                     
  
 
  
 
         } 
  
 
  
 
         //将新行数据加入到 
   Data Table中 
  
 
  
 
          mydt.Rows.Add(myrrh);  
  
 
  
 
               }


转载于:https://blog.51cto.com/lyh7898/465520