Webpart vs WinFormsApp - анализ CSV с другим результатом - PullRequest
0 голосов
/ 11 апреля 2011

Я создаю веб-часть Sharepoint, которая извлекает данные из файла CSV. Файл CSV находится на сервере (D: \ IBV_CAN.csv).

Вот код, который должен загрузить данные в DataTable:

     private bool importCsv()
        {
            try
            {
                csvFullpath = csvFileDir + csvFileName;
                importData = CSVParser.ParseCSV(csvFullpath);
                if (importData == null)
                {
                    msg += "The file " + csvFullpath + " does not exist!<br />";
                    return false;
                }
                else
                {
                    msg += "<br />CSV import succesful. Number of rows: " + importData.Rows.Count + "<br />";
                }
            }
            catch (Exception ex)
            {
                errormsg += "<br /><br />Error! (Code: 100)<br />" + ex;
                return false;
            }
            return true;
        }

    class CSVParser
    {
        public static DataTable ParseCSV(string path)
        {
            if (!File.Exists(path))
                return null;

            string full = Path.GetFullPath(path);
            string file = Path.GetFileName(full);
            string dir = Path.GetDirectoryName(full);

            //create the "database" connection string
            string connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
              + "Data Source=\"" + dir + "\\\";"
              + "Extended Properties=\"text;HDR=No;FMT=Delimited\"";

            //create the database query
            string query = "SELECT * FROM " + file;

            //create a DataTable to hold the query results
            DataTable dTable = new DataTable();

            //create an OleDbDataAdapter to execute the query
            OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);

            try
            {
                //fill the DataTable
                dAdapter.Fill(dTable);
            }
            catch (InvalidOperationException /*e*/)
            { }

            dAdapter.Dispose();

            return dTable;
        }
    }

importData - это DataTable, объявленный ранее. Значения строк csvFileDir и csvFileName равны "D: \" и "IBV_CAN.csv" соответственно. После вызова функции importCsv () из CreateChildControls () веб-части строка msg отображается в виде текста метки. То же самое касается строки errormsg . Я получаю следующий результат:

CSV импорт успешно завершен. Количество рядов: 0

errormsg is "".

Я тестировал ту же самую функцию CSVParser.ParseCSV в приложении Windows Forms:

data= CSVParser.ParseCSV(csvFullpath);
label2.Text = "Number of rows: " + data.Rows.Count + "\n";

Используя тот же csvFullpath , результат будет:

Количество рядов: 1008

Оба решения используют .NET Framework 3.5 и работают на одном компьютере. Как мне изменить код веб-части, чтобы он извлекал данные CSV так же, как это делает WinFormsApp?

...