Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > อ่านข้อมูลไฟล์ใน excel พออ่านเสร็จ โปรแกรมไม่ยอมปิดไฟล์ excel นั้นๆให้



 

อ่านข้อมูลไฟล์ใน excel พออ่านเสร็จ โปรแกรมไม่ยอมปิดไฟล์ excel นั้นๆให้

 



Topic : 115346



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



ผมเปิดไฟล์ excel แล้วให้โปรแกรมมันอ่านค่าลง dataset สำเร็จแล้ว พออ่านเสร็จผมจะปิดไฟล์ excel นั้นด้วยอะครับ ต้องทำไง

ๅๅๅ

นี่โค้ด อ่านครับ select มาลง dataset
Code (VB.NET)
    Private Sub DisplayExcel()
        Dim MyConnection As System.Data.OleDb.OleDbConnection
        Dim DtSet As System.Data.DataSet
        Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
        MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & filePath & "';Extended Properties=Excel 8.0;")
        MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [" & ExcelSheetName & "$]", MyConnection)
        MyCommand.TableMappings.Add("Table", "Net-informations.com")
        DtSet = New System.Data.DataSet
        MyCommand.Fill(DtSet)
        bsexcel.DataSource = DtSet.Tables(0)
        dgvexcel.DataSource = bsexcel
        MyConnection.Close()
    End Sub


คลิกอ่าน 4 ไฟล์พร้อมกัน พอมันอ่านเสร็จ มันเปิดทั้ง 4 ไฟล์ค้างไว้เลยครับ ผมอยากให้มันปิดตอนอ่านเสร็จอะครับ

111



Tag : .NET, MySQL, VB.NET, VS 2008 (.NET 3.x), Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-03-23 18:49:12 By : zarooman View : 1439 Reply : 8
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Code (VB.NET)
MyConnection.Dispose()


น่าจะเป็น Dispose() แทนครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-23 20:32:17 By : mr.win
 


 

No. 2



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ปิดมันแบบหน้าด้านๆเลยได้ป่าวครับ
Code (C#)
            foreach (System.Diagnostics.Process clsProcess in System.Diagnostics.Process.GetProcesses())
            {
                if (clsProcess.ProcessName.Contains("Excel"))
                {
                    clsProcess.Kill();
                }
            }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-24 09:12:31 By : lamaka.tor
 

 

No. 3



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2015-03-23 20:32:17
รายละเอียดของการตอบ ::
เดี๋ยวลองดูครับ

ตอบความคิดเห็นที่ : 2 เขียนโดย : lamaka.tor เมื่อวันที่ 2015-03-24 09:12:31
รายละเอียดของการตอบ ::
ห้าๆๆ ท่านแล้วงาน ที่เขาเปิดทิ้งไว้ไม่ได้เซฟ สมมติมี 3-4 งาน มันจะไม่หายหมดหรอ ฮาร์ดคอ เกิ้น ห้าๆ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-24 15:09:50 By : zarooman
 


 

No. 4



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-24 15:59:25 By : lamaka.tor
 


 

No. 5

Guest


เรียก excel interop ใน background worker

ใช้เสร็จแล้วปิด dispose excel แล้วก็ปิด background worker ทิ้ง process จะไม่ค้าง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-24 16:09:31 By : เคยตอบไปแล้ว ไปค้นของเก่าเอง
 


 

No. 6



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

MyConnection.Dispose() โปรเซสก็ยังค้างอยู่อะครับ

ตอบความคิดเห็นที่ : 5 เขียนโดย : เคยตอบไปแล้ว ไปค้นของเก่าเอง เมื่อวันที่ 2015-03-24 16:09:31
รายละเอียดของการตอบ ::
ต้องทำยังไงหรอครับผมไม่เคยใช้ background worker เลย

ลองทำตาม https://www.thaicreate.com/dotnet/forum/055150.html แล้วแต่ไม่เข้าใจอะครับ



ประวัติการแก้ไข
2015-03-24 20:12:43
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-24 20:11:31 By : zarooman
 


 

No. 7



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

Code (C#)
public static System.Data.DataTable GetTableFormExcel(string _SQL, string FileExcel)
        {
            string _ConnectionString = @"Data Source=" + FileExcel + "; Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;";
            try
            {
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(_ConnectionString);
                conn.Open();
                string strQuery = _SQL;
                System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
                System.Data.DataSet ds = new System.Data.DataSet();
                adapter.Fill(ds);
                return ds.Tables[0];
            }
            catch { return null; }
            
        }



ผมใช้แบบนี้อยู่อ่าครับ
ไม่เห็นมันขึ้น excel.exe มาให้ลบเลยนิครับ

Code (C#)
private void RefreshData()
        {
            Text = "กรุณารอ...";
            Cursor = Cursors.WaitCursor;
            pathTemp = System.IO.Path.GetTempPath() + "\\Report" + String.Format("{0:ddMMyyyy HHmmss}", DateTime.Now);
            TORServices.clsFile_Path.CreatePath(pathTemp);
            List<string> _file = new List<string>();
            _file = TORServices.clsFile_Path.GetFilesRecursive(TORServices.clsPathData.Path_AllReport, "*.Report");///@"H:\REPORT"
            if (_file.Count <= 0) { Cursor = Cursors.Default; return; }
            if (dt != null) { dt = null; }
            dt = new DataTable();
            dt.Columns.Add(new DataColumn("SampleID", typeof(string)));
            dt.Columns.Add(new DataColumn("Parameter", typeof(string)));
            dt.Columns.Add(new DataColumn("Value", typeof(string)));
            dt.Columns.Add(new DataColumn("Date", typeof(string)));
            dt.Columns.Add(new DataColumn("ผู้วิเคราะห์", typeof(string)));
            dt.Columns.Add(new DataColumn("Seleced", typeof(Boolean)));
            string FileExcel;
            foreach (string _f in _file)
            {
                //เช็คการเปิดไฟล์ถ้าเปิดให้ก๊อบไปวางที่ Temp
                if (System.IO.File.GetCreationTime(_f) >= dateTimePicker1.Value && System.IO.File.GetCreationTime(_f) <= dateTimePicker2.Value)
                {
                    //MessageBox.Show(_f);
                    if (!(TORServices.clsFile_Path.IsFileExcelOpen(_f)))
                    {
                        FileExcel = System.IO.Path.GetTempPath() + String.Format("{0:ddMMyyyy HHmmss}", DateTime.Now) + ".Report";
                        System.IO.File.Copy(_f, FileExcel);
                    }
                    else
                    {
                        FileExcel = _f;
                    }
                    //  FileExcel = _f;
                    DataTable _dt1 = TORServices.clsDatabaseServices.GetTableFormExcel("SELECT * FROM `mg_Kg$Print_Area`", FileExcel);
                    DataTable _dt2 = TORServices.clsDatabaseServices.GetTableFormExcel("SELECT * FROM `mg_L$Print_Area`", FileExcel);

                    if (_dt1 != null) { dgvmgKg.DataSource = _dt1; }
                    if (_dt2 != null) { dgvmgL.DataSource = _dt2; }
                    for (int i = 0; i < this.dgvmgL.RowCount - 1; i++)
                    {
                        if (this.dgvmgL[this.dgvmgL.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
                        {
                            DataRow dr = dt.NewRow();
                            dr["SampleID"] = this.dgvmgL[this.dgvmgL.ColumnCount - 6, i].Value.ToString().Trim();
                            dr["Parameter"] = this.dgvmgL[this.dgvmgL.ColumnCount - 5, i].Value.ToString().Trim();
                            dr["Value"] = this.dgvmgL[this.dgvmgL.ColumnCount - 4, i].Value.ToString().Trim();
                            dr["Date"] = this.dgvmgL[this.dgvmgL.ColumnCount - 3, i].Value.ToString().Trim();
                            dr["ผู้วิเคราะห์"] = this.dgvmgL[this.dgvmgL.ColumnCount - 2, i].Value.ToString().Trim();
                            dr["Seleced"] = false;
                            dt.Rows.Add(dr);
                        }
                    }

                    for (int i = 0; i < this.dgvmgKg.RowCount - 1; i++)
                    {
                        if (this.dgvmgKg[this.dgvmgKg.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
                        {
                            DataRow dr = dt.NewRow();
                            dr["SampleID"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 6, i].Value.ToString().Trim();
                            dr["Parameter"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 5, i].Value.ToString().Trim();
                            dr["Value"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 4, i].Value.ToString().Trim();
                            dr["Date"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 3, i].Value.ToString().Trim();
                            dr["ผู้วิเคราะห์"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 2, i].Value.ToString().Trim();
                            dr["Seleced"] = false;
                            dt.Rows.Add(dr);
                        }
                    }
                    dataGridView1.DataSource = dt;
                    dataGridView1.Columns[3].Width = 120;
                    dataGridView1.Columns[4].Width = 150;
                    dataGridView1.Columns[5].Width = 60;
                    dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
                    Cursor = Cursors.Default;
                    Text = "Report HM";
                }
            }

        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-25 08:58:53 By : lamaka.tor
 


 

No. 8



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

Code (C#)
public static System.Data.DataTable GetTableFormExcel(string _SQL, string FileExcel)
        {
            string _ConnectionString = @"Data Source=" + FileExcel + "; Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;";
            try
            {
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(_ConnectionString);
                conn.Open();
                string strQuery = _SQL;
                System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
                System.Data.DataSet ds = new System.Data.DataSet();
                adapter.Fill(ds);
                return ds.Tables[0];
            }
            catch { return null; }
            
        }



ผมใช้แบบนี้อยู่อ่าครับ
ไม่เห็นมันขึ้น excel.exe มาให้ลบเลยนิครับ

Code (C#)
private void RefreshData()
        {
            Text = "กรุณารอ...";
            Cursor = Cursors.WaitCursor;
            pathTemp = System.IO.Path.GetTempPath() + "\\Report" + String.Format("{0:ddMMyyyy HHmmss}", DateTime.Now);
            TORServices.clsFile_Path.CreatePath(pathTemp);
            List<string> _file = new List<string>();
            _file = TORServices.clsFile_Path.GetFilesRecursive(TORServices.clsPathData.Path_AllReport, "*.Report");///@"H:\REPORT"
            if (_file.Count <= 0) { Cursor = Cursors.Default; return; }
            if (dt != null) { dt = null; }
            dt = new DataTable();
            dt.Columns.Add(new DataColumn("SampleID", typeof(string)));
            dt.Columns.Add(new DataColumn("Parameter", typeof(string)));
            dt.Columns.Add(new DataColumn("Value", typeof(string)));
            dt.Columns.Add(new DataColumn("Date", typeof(string)));
            dt.Columns.Add(new DataColumn("ผู้วิเคราะห์", typeof(string)));
            dt.Columns.Add(new DataColumn("Seleced", typeof(Boolean)));
            string FileExcel;
            foreach (string _f in _file)
            {
                //เช็คการเปิดไฟล์ถ้าเปิดให้ก๊อบไปวางที่ Temp
                if (System.IO.File.GetCreationTime(_f) >= dateTimePicker1.Value && System.IO.File.GetCreationTime(_f) <= dateTimePicker2.Value)
                {
                    //MessageBox.Show(_f);
                    if (!(TORServices.clsFile_Path.IsFileExcelOpen(_f)))
                    {
                        FileExcel = System.IO.Path.GetTempPath() + String.Format("{0:ddMMyyyy HHmmss}", DateTime.Now) + ".Report";
                        System.IO.File.Copy(_f, FileExcel);
                    }
                    else
                    {
                        FileExcel = _f;
                    }
                    //  FileExcel = _f;
                    DataTable _dt1 = TORServices.clsDatabaseServices.GetTableFormExcel("SELECT * FROM `mg_Kg$Print_Area`", FileExcel);
                    DataTable _dt2 = TORServices.clsDatabaseServices.GetTableFormExcel("SELECT * FROM `mg_L$Print_Area`", FileExcel);

                    if (_dt1 != null) { dgvmgKg.DataSource = _dt1; }
                    if (_dt2 != null) { dgvmgL.DataSource = _dt2; }
                    for (int i = 0; i < this.dgvmgL.RowCount - 1; i++)
                    {
                        if (this.dgvmgL[this.dgvmgL.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
                        {
                            DataRow dr = dt.NewRow();
                            dr["SampleID"] = this.dgvmgL[this.dgvmgL.ColumnCount - 6, i].Value.ToString().Trim();
                            dr["Parameter"] = this.dgvmgL[this.dgvmgL.ColumnCount - 5, i].Value.ToString().Trim();
                            dr["Value"] = this.dgvmgL[this.dgvmgL.ColumnCount - 4, i].Value.ToString().Trim();
                            dr["Date"] = this.dgvmgL[this.dgvmgL.ColumnCount - 3, i].Value.ToString().Trim();
                            dr["ผู้วิเคราะห์"] = this.dgvmgL[this.dgvmgL.ColumnCount - 2, i].Value.ToString().Trim();
                            dr["Seleced"] = false;
                            dt.Rows.Add(dr);
                        }
                    }

                    for (int i = 0; i < this.dgvmgKg.RowCount - 1; i++)
                    {
                        if (this.dgvmgKg[this.dgvmgKg.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
                        {
                            DataRow dr = dt.NewRow();
                            dr["SampleID"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 6, i].Value.ToString().Trim();
                            dr["Parameter"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 5, i].Value.ToString().Trim();
                            dr["Value"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 4, i].Value.ToString().Trim();
                            dr["Date"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 3, i].Value.ToString().Trim();
                            dr["ผู้วิเคราะห์"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 2, i].Value.ToString().Trim();
                            dr["Seleced"] = false;
                            dt.Rows.Add(dr);
                        }
                    }
                    dataGridView1.DataSource = dt;
                    dataGridView1.Columns[3].Width = 120;
                    dataGridView1.Columns[4].Width = 150;
                    dataGridView1.Columns[5].Width = 60;
                    dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
                    Cursor = Cursors.Default;
                    Text = "Report HM";
                }
            }

        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-25 08:59:37 By : lamaka.tor
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อ่านข้อมูลไฟล์ใน excel พออ่านเสร็จ โปรแกรมไม่ยอมปิดไฟล์ excel นั้นๆให้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่