Файл Excel используется другим процессом на сервере - PullRequest
0 голосов
/ 11 апреля 2020

Я импортирую файл Excel с кодом

public partial class GeneralVehicle : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string FilePath;
        string Extension;

        if (Session["FilePath"] != null && Session["Extension"] != null)
        {
            FilePath = Convert.ToString(Session["FilePath"]);
            Extension = Convert.ToString(Session["Extension"]);

            Import_To_Grid(FilePath, Extension);
        }
    }

    private void Import_To_Grid(string FilePath, string Extension)
    {
        string conStr = "";
        switch (Extension)
        {

            case ".xls": //Excel 97-03
                conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties='Excel 8.0;HDR={1}'";

                break;

            case ".xlsx": //Excel 07

                conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 8.0;HDR={1}'";

                break;

        }

        conStr = String.Format(conStr, FilePath, "Yes");
        OleDbConnection connExcel = new OleDbConnection(conStr);
        OleDbCommand cmdExcel = new OleDbCommand();
        OleDbDataAdapter oda = new OleDbDataAdapter();
        DataTable dt = new DataTable();
        cmdExcel.Connection = connExcel;



        //Get the name of First Sheet
        connExcel.Open();
        DataTable dtExcelSchema;
        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
        connExcel.Close();



        //Read Data from First Sheet

        connExcel.Open();
        cmdExcel.CommandText = "SELECT * From [" + SheetName + "] where Print = 'No' ";
        oda.SelectCommand = cmdExcel;
        oda.Fill(dt);
        connExcel.Close();



        //Bind Data to GridView

        //  GridView1.Caption = Path.GetFileName(FilePath);
        GridView1.DataSource = dt;
        GridView1.DataBind();

    }

Excel загружается в первый раз, но когда я пытаюсь загрузить тот же Excel снова, он выдает ошибку.

Процесс не может получить доступ к файлу 'D: \ INETPUB \ VHOSTS \ rajseva.com \ httpdocs \ Files \ passfile_generalvh.xlsx', поскольку он используется другим процессом

Пожалуйста, помогите .

Спасибо.

1 Ответ

0 голосов
/ 16 апреля 2020

Окончательно изменив

        connExcel.Open();
        cmdExcel.CommandText = "SELECT * From [" + SheetName + "] where Print = 'No' ";
        oda.SelectCommand = cmdExcel;
        oda.Fill(dt);
        connExcel.Close();

На

    connExcel.Open();
    cmdExcel.CommandText = "SELECT * From [" + SheetName + "] where Print = 'No' ";
    oda.SelectCommand = cmdExcel;
    oda.Fill(dt);
    connExcel.Close();
    connExcel.Dispose();  //adding this and
    cmdExcel.Dispose();   // this

Решена проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...