用c#读取xls只获取部分数据

时间:2013-08-30 07:48:30

标签: c# asp.net

我使用c#从xls电子表格中读取数据。它读得很好,但由于某种原因,它错过了一些长数据单元格内容的结束。

下面是我的一些代码

string excelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=W:\translations-mk2.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(excelConnectionString))
{
    //List columns you need from the Excel file
    System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand("Select * FROM [phrases$]", connection);



    connection.Open();


    // Create DbDataReader to Data Worksheet
    using (System.Data.OleDb.OleDbDataReader dr = command.ExecuteReader())
    {
        if (dr.HasRows)
        {
            int x = 1;
            while (dr.Read())
            {
                //Response.Write(dr[1].ToString() + " : " + dr[6].ToString() + "<p>&nbsp;</p><p>&nbsp;</p>");
                string dbId = dr[0].ToString();
                string htmlControl = dr[1].ToString();
                string eng = dr[2].ToString();
                string german = dr[4].ToString();
                string greek = dr[6].ToString();
                if (dbId == "65")
                {
                    Response.Write("greek: " + dr[6].ToString());
                }

内容是希腊文,所以字符串应该是

更多ADHD变革联盟(ΣυμμαχίαγιαΑλλαγήστηΔΕΠΥ)。 Ηεκστρατεία多动症变革联盟(ΣυμμαχίαγιαΑλλαγήστηΔΕΠΥ)είναιέναευρωπαϊκόέργοπουτελείυπότηνκαθοδήγησημιαςΣυντονιστικήςΕπιτροπήςΑνεξάρτητωνΕυρωπαίωνΕμπειρογνωμόνωνσεθέματαΔΕΠΥ(ΔιαταραχήΕλλειμματικήςΠροσοχήςκαιΥπερκινητικότητας),τοοποίουλοποιείταιμετηνυποστήριξηομάδωνυπεράσπισηςασθενώνκαιαναπτύσσεται καιχρηματοδοτείταιαπότηφαρμακευτικήεταιρείαShire。

但字符串中的内容是

更多ADHD变革联盟(ΣυμμαχίαγιαΑλλαγήστηΔΕΠΥ)。 ΗεκστρατείαADHD变革联盟(ΣυμμαχίαγιαΑλλαγήστηΔΕΠΥ)είναιέναευρωπαϊκόέργοπουτελείυπότηνκαθοδήγησημιαςΣυντονιστικήςΕπιτροπήςΑνεξάρτητωνΕυρ

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用Excel数据阅读器? http://exceldatareader.codeplex.com/

答案 1 :(得分:0)

您需要在注册表中更改TypeGuessRows的值。此值指定在确定每列的数据类型时扫描的一个或多个行。默认值为8,前八行中没有一行包含超过255个字符。您可以将值更改为大于8的数字或指定值为零,这将导致扫描所有行。请记住,使用零值可能会影响性能。

HKLM \ SOFTWARE \微软\喷气\ 4.0 \发动机\ EXCEL \ TypeGuessRows