在C#中读取csv文件

时间:2014-03-05 04:38:12

标签: c# excel linq csv

我正在开发一个生物识别出勤项目。我有一个拇指冲孔机,以excel格式导出每日报告,以便在工作人员的时间和时间内完成。

报告格式: enter image description here

现在我想开发一个C#应用程序来读取这个文件,并显示一些关于出勤的报告。我尝试将这个文件转换为csv并在代码下面使用但是输出是空白的。任何帮助都会感谢指导如何阅读这个file(xls / csv)?

C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var column1 = new List<string>();
                var column2 = new List<string>();
                using (var rd = new StreamReader("db.csv"))
                {
                    while (!rd.EndOfStream)
                    {
                        var splits = rd.ReadLine().Split(';');
                        column1.Add(splits[0]);
                        column2.Add(splits[1]);
                    }
                }
                // print column1
                Console.WriteLine("Column 1:");
                foreach (var element in column1)
                    Console.WriteLine(element);

                // print column2
                Console.WriteLine("Column 2:");
                foreach (var element in column2)
                    Console.WriteLine(element);
            }
            catch (Exception ae)
            {
                Console.WriteLine(ae);
            }
            finally
            {
                Console.WriteLine("ok");
            }
        }
    }
}

4 个答案:

答案 0 :(得分:1)

你可以找到很多方法来做到这一点

对于CSV,您可以使用 http://kbcsv.codeplex.com/

要读取Excel,您需要将Com组件添加到项目中,即Microsoft Excel 12.0对象库 例如 你可以参考 Reading Excel files from C#

e.g。代码

string con = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\test.xls;Extended Properties='Excel 8.0;HDR=Yes;'"
using(OleDbConnection connection = new OleDbConnection(con))
{
    connection.Open();
    OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection) 
    using(OleDbDataReader dr = command.ExecuteReader())
    {
         while(dr.Read())
         {
             var row1Col0 = dr[0];
             Console.WriteLine(row1Col0);
         }
    }
}

答案 1 :(得分:1)

使用“LinqToExcel” - 然后你可以做这样的事情:

var book = new LinqToExcel.ExcelQueryFactory(@"C:\Path\File.csv");

var query =
    from row in book.Worksheet<MyObject>()
    where row.Status != "Disabled"
    select new
    {
        row.Date,
        row.Description,
    };

答案 2 :(得分:0)

利用csv helper library

var csv = new CsvReader( File.OpenRead( "file.csv" ) );
var myCustomObjects = csv.GetRecords<CustomObject>();

答案 3 :(得分:0)

为此,我建议LightweightExcelReader。要阅读示例中的电子表格,您可以执行以下操作:

julia> findfirst(vec(all(x .<= y; dims=2)))
2

免责声明:我是LightweightExcelReader的作者。