3

C# を使用して Excel (30,000 行以上) からデータを読み取る際に問題が発生しています。ローカル システムでテストすると正常に動作します。つまり、Excel からすべての行をコピーしますが、運用サーバーに展開して実行すると、約 12,000 行しか読み取れません)。

BulkCopy も使用してみましたが、同じです。Web サーバー (私の Web サーバーは Windows Server 2008 です) と何か関係がありますか?

これについて私を助けてください。ありがとう

protected void ImportFromExcelToTempCompetitionTable(string filename)  
{
    string strConn = "Provider=Microsoft.ACE.OLEDB.12.0; " + "Data Source=" + filename + ";" + "Extended Properties=Excel 12.0";

    OleDbDataAdapter cmdOle;

 cmdOle = new OleDbDataAdapter("SELECT [StringColA], [StringColB], [NumberCol1], [NumberCol2] from  [XYZSheet]", strConn);


    try
    {
     Boolean blnSuccess = false;
        DataSet ds = null;
        ds = new DataSet();
        cmdOle.Fill(ds);
    if (ds.Tables[0].Rows.Count > 0)
        {
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            //*****************
            using (cnn = new SqlConnection(util.GetConnectionString()))
            {

                string sqlQuery = "INSERT INTO tbl_XYZ(StringColA, StringColB, NumberCol1,NumberCol2) values (@StringColA, @StringColB, @NumberCol1, @NumberCol2)";
                cmd = new SqlCommand(sqlQuery, cnn);
                cmd.CommandType = CommandType.Text;
                SqlParameter StringColA= new SqlParameter("@StringColA", SqlDbType.VarChar, 500);
                StringColA.Value = dr["StringColA"].ToString();
                cmd.Parameters.Add(StringColA);
                SqlParameter StringColB= new SqlParameter("@StringColB", SqlDbType.VarChar, 500);
                StringColB.Value = dr["StringColB"].ToString();
                cmd.Parameters.Add(StringColB);
                SqlParameter NumberCol1= new SqlParameter("@NumberCol1", SqlDbType.Decimal, 25);
                NumberCol1.Value = dr["NumberCol1"].ToString();
                cmd.Parameters.Add(NumberCol1);
                SqlParameter NumberCol2= new SqlParameter("@NumberCol2", SqlDbType.Decimal, 25);
                NumberCol2.Value = dr["NumberCol2"].ToString();
                cmd.Parameters.Add(NumberCol2);

                try
                {
                    cnn.Open();
                    cmd.ExecuteNonQuery();
                    blnSuccess = true;
                }
                catch (Exception ex)
                {

                }
                finally
                {
                    if (blnSuccess)
                    {
                        cmd.Dispose();
                        cnn.Close();
                    }
                }

            }
            //*****************
        }
    }        

    }
    catch (Exception ex)
    {

    }
    finally
    {

    }

}
4

0 に答える 0