MySQL

2012-11-12 4 views
15

मैं एक वेब अनुप्रयोग (ASP.NET) एक MySQL डाटाबेस के साथ पर काम कर रहा हूँ करने के लिए ASP.NET अनुप्रयोग से Excel फ़ाइल अपलोड करने में त्रुटि। जब मैं इस एप्लिकेशन के माध्यम से एक्सेल फ़ाइल (.xlsx) अपलोड करने का प्रयास करता हूं तो मुझे कोई समस्या नहीं है। समस्या तब शुरू होती है जब फ़ाइल 24904 से अधिक रिकॉर्ड होती है।MySQL

उस बिंदु मैं निम्नलिखित त्रुटि मिलती है पर

:

This table contains cells that are outside the range of cells defined in this spreadsheet.

और यह पहली 24,904 रिकॉर्ड लिखते हैं।

मैंने लोड को गुणक बैचों में विभाजित करने की कोशिश की और यह काम नहीं किया।

किसी भी विचार?

Dim connExcel As New System.Data.OleDb.OleDbConnection(conStr) 
Dim cmdExcel As New System.Data.OleDb.OleDbCommand() 
Dim dt As New DataTable() 
Dim dataset As New DataSet 
Dim x As Integer = 2 
Dim y As Integer = 20001 
Dim range As String = "A" + x.ToString + ":" + "I" + y.ToString 

cmdExcel.Connection = connExcel 

If erro = 0 Then 
    Try 

     For i As Integer = 0 To 50 
      connExcel.Open() 

      dataset.Reset() 
      dataset.Clear() 

      Dim oda As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$" & range.ToString & "]", connExcel) 
      oda.TableMappings.Add("Table", "ExcelTest") 

      oda.Fill(dataset) 
      connExcel.Close() 

      If dataset.Tables(0).Rows.Count > 0 Then 
       SendToDB(dataset) 
      Else 
       i = 50 
      End If 

      x = x + 20000 
      y = y + 20000 

      range = "A" + x.ToString + ":" + "I" + y.ToString 
     Next 

     Label7.Visible = True 
     Label7.Text = "The information has been written successfully from 0 to " + y.ToString 

    Catch ex As Exception 
     Label9.Visible = True 
     Label9.Text = "Database Error 2:" + ex.Message 
     connExcel.Close() 
    End Try 
End If 
+1

कौन सी लाइन त्रुटि को फेंकता है? –

+4

क्या आपने सत्यापित किया है कि पंक्ति 24905 के डेटा में परिभाषित हेडर कॉलम के बाहर कोई अतिरिक्त डेटा नहीं है? – dhirschl

+0

dhirschl - मैंने लाइन की जांच की और इसमें कुछ भी अजीब नहीं है। मैंने इसे हटा दिया और अगली पंक्ति –

उत्तर

0

मुझे लगता है कि आप एक एक्सेल सीमा

अधिक संख्या में अपने पाश गिनती शुरू कर प्रयास करें और देखें (आप जोड़ सकते हैं तालिका मैपिंग की संख्या) पर पहुंच जाते हैं, तो यह कितनी बार की गिनती है आप डेटा के बजाए ऐसा करते हैं जो समस्या का कारण बनता है। हो सकता है कि कुछ इस तरह:

Dim x As Integer = 40002 
Dim y As Integer = 60001 
0

आप काउंटर चर जोड़कर अपनी सीमा रीसेट कर सकते हैं ...... .... विशिष्ट श्रेणी के लिए यह भी वृद्धि ... और इसे रीसेट ...

0

तुम भी डेटाबेस में एक्सेल फ़ाइल लोड करने के लिए फ़ाइल क्वेरी में लोड डेटा का उपयोग कर सकते हैं। ...

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' 
    [REPLACE | IGNORE] 
    INTO TABLE tbl_name 
    [CHARACTER SET charset_name] 
    [{FIELDS | COLUMNS} 
     [TERMINATED BY 'string'] 
     [[OPTIONALLY] ENCLOSED BY 'char'] 
     [ESCAPED BY 'char'] 
    ] 
    [LINES 
     [STARTING BY 'string'] 
     [TERMINATED BY 'string'] 
    ] 
    [IGNORE number LINES] 
    [(col_name_or_user_var,...)] 
    [SET col_name = expr,...] 
0

निकालें रेंज उपयोग पत्रक 1 और retest न्यू System.Data.OleDb.OleDbDataAdapter रूप मंद oda ("का चयन करें * से [पत्रक 1 $]", connExcel)

: क्वेरी के लिए वाक्य रचना है
0

एक्सेल सीमा उस से बड़ी है। आपके पास कक्षों में वर्णित वर्ण या रिक्त स्थान हैं जो निर्दिष्ट सीमा के बाहर आते हैं (त्रुटि संदेश कहता है) त्रुटि पंक्तियों पर आपके 'अंतिम' कॉलम के दाईं ओर कॉलम की जांच करें। मुझे लगता है कि आप पाएंगे कि उनमें कुछ शामिल है।

परीक्षण करने का एक आसान तरीका, नए डेटा से भरे 50 000 रिकॉर्ड के साथ एक नई नई फ़ाइल बनाएं। मुझे लगता है कि आप इसे काम करेंगे।

1

मैं OLDB उपयोग नहीं करते या इसके कई बनाने के मुद्दे के बाद से उत्कृष्टता प्राप्त एक्सेल

पढ़ते समय मैं ExcelDataReader का उपयोग https://github.com/ExcelDataReader/ExcelDataReader

यह

स्थापित-पैकेज ExcelDataReader

public static DataSet GetExcelDataSet(string filePath) 
    { 
     FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read); 

     IExcelDataReader excelReader; 
     if (Path.GetExtension(filePath) == ".xls") 
     { 
      //Choose one of either 1 or 2 
      //1. Reading from a binary Excel file ('97-2003 format; *.xls) 
      excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 
     } 
     else 
     { 
      //2. Reading from a OpenXml Excel file (2007 format; *.xlsx) 
      excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
     } 
     //Choose one of either 3, 4, or 5 
     //3. DataSet - The result of each spreadsheet will be created in the result.Tables 

     ////////DataSet result = excelReader.AsDataSet(); 

     //4. DataSet - Create column names from first row 
     excelReader.IsFirstRowAsColumnNames = true; 
     DataSet result = excelReader.AsDataSet(); 

     //5. Data Reader methods 
     //while (excelReader.Read()) 
     //{ 
     // //excelReader.GetInt32(0); 
     //} 

     //6. Free resources (IExcelDataReader is IDisposable) 
     excelReader.Close(); 
     return result; 
    } 
प्रयास करें