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 ที่เปิดอยู่มาลงใน DataGridView ได้ยังไงครับ



 

ผมจะดึงไฟล์ Excel ที่เปิดอยู่มาลงใน DataGridView ได้ยังไงครับ

 



Topic : 111081



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



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



1311

งานผมต้องใช้ไฟล์ Excel มาลงในครับทำงานในวงแลน
คอนเซบคือ
ผมมีไฟล์ Excel อยู่ซึ่งไฟล์นี้จะเก็บไว้ในหน่วยงานแต่ละหน่วยมีประมาณ 500 ไฟล์เป็นอย่างต่ำ
ไฟล์นี้คนในหน่วยจะต้องเปิดมาแก้ไขข้อมูลเป็นประจำ
ส่วนหัวหน้าฝ่ายผมให้รวมข้อมูลไฟล์แต่ละไฟล์มาเก็บไว้ใน DatagridView ตัวหนึ่งเพื่อดูผลงานแค่นั้นเองครับ

แต่มีปัญหาว่าถ้ามีคนเปิดไฟล์ Excel อยู่โปรแกรมที่เขียนไว้จะไม่สามารถเปิดไฟล์นั้นได้
มีวิธีแก้ไม๊ครับ ไม่จำเป็นต้องใช้ Dataset กับ DataAdapter หรือ Datatable ก็ได้ครับ

แค่ datagrid กะเรียงจากมากไปน้อยหรือค้นหาข้อมูลได้ก็พอครับ



Tag : .NET, Excel (Excel.Application), Win (Windows App), C#, VS 2012 (.NET 4.x), Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-09-04 15:30:13 By : lamaka.tor View : 4101 Reply : 19
 

 

No. 1



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



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

มีวิธีเดียวต้องก็อปปี้ไฟล์ ทั้งหมดนั้น มาไว้ที่เครื่องก่อนดึงลง Datagrid
ทำเป็นหน่วงเวลา ให้ทำการก็อปปี้ ทุกๆ 20 นาที ก็ได้ครับ ประมาณว่า 20 นาที อัพเดทการทำงาน 1 ครั้ง

หรือท่านอื่นมีวิธีไหนรอคนมาตอบครับ

ปล.ผมว่าแค่เปิดไฟล์พวกนั้นแล้วดึงเฉยๆผมว่าไม่น่าจะมีปัญหานะ ขอดูโค้ดหน่อยครับ








ประวัติการแก้ไข
2014-09-04 16:23:37
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-04 16:22:03 By : zarooman
 


 

No. 2



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



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

โค๊ด ประมาณนี้ครับ
เก็บไฟล์ทั้งหมดไว้ใน แลน ชื่อโฟลเดอร์ AllReport โดยไฟล์ให้ใช้ นามสกุล .Report เพื่อไม่ให้สับสนกับงานอื่น
list ไฟล์ออกมา จากนั้นก็แค่อ่านไฟล์ ลงใน Datatable ส่วนใหญ่จะติดที่ GetTable เพราะมีบางไฟล์เปิดอยู่
Code (C#)
private void RefreshData()
        {
                Cursor = Cursors.WaitCursor;
                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)));
        foreach(string f in _file)
                {
                    dgvmgKg.DataSource =  GetTable("SELECT * FROM `mg_Kg$Print_Area`", f).DefaultView;
                    dgvmgL.DataSource = GetTable("SELECT * FROM `mg_L$Print_Area`", f).DefaultView;
                        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;
        }
        private System.Data.DataTable GetTable(string _SQL, string FileExcel)
        {
          
            string _ConnectionString = @"Data Source=" + FileExcel + "; Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;"; 

            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];

        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-04 17:12:05 By : lamaka.tor
 

 

No. 3



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



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

ยังไม่ได้เลยคร้าบช่วยหน่อย

ขอแค่เอาข้อมูลจากไฟล์ Excel ที่เปิดมาใช้งานได้ก็พอแล้วครับ
ตอนนี้ด่วนมาก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 08:32:55 By : lamaka.tor
 


 

No. 4



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



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

อันนี้ไม่เคยทำจริงๆครับ แนะนำก่อนจะ Get Table แทนที่เราจะไปเปิดจากวงแลน เรามาเปิดในเครื่องเราดีกว่า ให้ทำการก็อปปี้ โฟลเดอร์ Allreport มาไว้ยังเครื่องเราแล้วค่อยเปิดอีกที


ประวัติการแก้ไข
2014-09-05 08:50:54
2014-09-05 08:51:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 08:45:02 By : zarooman
 


 

No. 5



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



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

ขอบคุณครับเด๋วลองทำดู
ก่อนเที่ยงแจ้งผลให้ทราบอีกทีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 08:47:26 By : lamaka.tor
 


 

No. 6



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



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

ไปเจอลิงค์นี้มา ลองใช้ดูครับไม่เห็นมี GetTable
http://stackoverflow.com/questions/16293643/import-excel-to-datagridview
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 08:51:36 By : zarooman
 


 

No. 7



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



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

File ไหนที่เปิดใช้งานอยู่ก็ไม่ต้องไปเปิดมัน

Code (C#)
 public static bool IsFileLocked(FileInfo file)
    {
        FileStream stream = null;

        try
        {
            stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
        }
        catch (IOException)
        {
            //the file is unavailable because it is:
            //still being written to
            //or being processed by another thread
            //or does not exist (has already been processed)
            return true;
        }
        finally
        {
            if (stream != null)
                stream.Close();
        }

        //file is not locked
        return false;
    }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 08:53:56 By : zarooman
 


 

No. 8



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



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

ผมก็เอาโค๊ดมาจากเว็บนั้นแหละครับแต่มาดัดแปลงเป็นให้ส่งค่าออกมาเป็น Datatable ครับ
จะอ่านไฟล์โดยใช้ interop.excel ก็พอได้ยุครับแต่นานพอสมควร
คือเราไม่รู้ว่าคนเปิดอ่านจะเปิดอ่านตอนไหน
ครั้งผมจะก๊อบไปวางที่ Temp ก็จะติดที่ว่าข้อมูลมันเยอะ 500 กว่าไฟล์ 800 กว่าเม็กครับ
จะก๊อบทีเดียวเปิดอ่านทั้งวันก็ไม่ได้เพราะไฟล์ Excel มีคนอัพเดทข้อมูลตลอดเวลา
ถ้าจะก๊อบก็ต้องก๊อบทุกครั้งที่สั่งรีเฟชดาต้า
แบบนั้นก็ต้องเจอขยะกองโตที่ Temp อีกอ่ะครับ
เป็นนักวิทย์สบายอยู่แท้ๆดันมาหาเรื่องปวดหัว 5555
ประเด็นมีอยู่แค่นี้ครับ
ผมเป็นนักวิทย์ ในหน่วยงานมี 5 แผนก แต่ละแผนกใช้ฟอร์มคำนวนผลไม่เหมือนกันครับ
ผมจะยกตัวอย่างแผนกผมละกัน โลหะหนักครับ วิเคราะห์แร่ธาตุต่างๆฟอร์มที่ผมออกแบบให้หน่วยงานเป็นดังรูปครับ

1311

จากนั้นผมจะเ อาแต่ละไฟล์รวมรวมใน Datagrid
พอออกมาเป็น datagrid จะเป็นแบบนี้ครับ

1312

ความจริงผมอยากจะใช้ Access แต่ว่าใช้แล้วงานไม่เวิร์กเพราะผมต้องใช้สูตรคุบแต่ละเซลล์เยอะครับ
ก็เลยต้องจำทนใช้ Excel ต่อไป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 09:40:02 By : lamaka.tor
 


 

No. 9



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



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

ได้แระครับช้ากว่าเดิมนิดนึงแต่ก็ต้องทำไปก่อนเพราะงานต้องออกทำวัน
ใครมีแนวคิดดีๆแนะนำได้อีกนะครับ
ผมต้องการให้โปรแกรมออกมาดีที่สุดคนใช้งานง่ายครับ
Code (C#)
private void RefreshData()
        {
                Cursor = Cursors.WaitCursor;
                List<string> _file = new List<string>();
                _file = TORServices.clsFile_Path.GetFilesRecursive(@"E:\REPORT", "*.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 (!(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;
                    dgvmgKg.DataSource =   GetTable("SELECT * FROM `mg_Kg$Print_Area`", FileExcel).DefaultView;
                    dgvmgL.DataSource = GetTable("SELECT * FROM `mg_L$Print_Area`", FileExcel).DefaultView;
                        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;
        }
        private System.Data.DataTable GetTable(string _SQL, string FileExcel)
        {
          
            string _ConnectionString = @"Data Source=" + FileExcel + "; Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;"; 

            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];

        }
public static bool IsFileExcelOpen(string FileName)
        {
            try
            {
                Stream s = File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.None);

                s.Close();

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 10:29:52 By : lamaka.tor
 


 

No. 10



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



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

มีปัญหาตรงที่ว่า ไม่สามารถ Get file ที่เปิดอยู่ได้งั้นผมขอแนะนำนะครับลองหาชุดคำสั่งที่ใช้ เช็คว่าไฟลไหนที่เปิดอยู่ก็ไม่ต้องไปเปิดมันแต่ก็อปปี้มาไว้ที่เครื่อง แล้วเปลี่ยนพาร์ทมาเปิดที่เครื่องแทนส่วนไฟล์ที่ปิดอยู่ก็ทำตามเดิม นั่นน่าจะแก้ไขได้นะครับ ปกติผมเขียน VB แต่ C# ผมแค่หางอึ่ง ขออภัยด้วยครับ

http://stackoverflow.com/questions/17988559/how-to-check-an-excel-workbook-is-already-open-in-c-sharp-win-forms
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 10:39:57 By : zarooman
 


 

No. 11



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



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


ผมสรุปให้ดังนี้ครับ

1. เริ่มต้นที่คำถาม - ถึง #NO9
---- วิธีคิดผิดหมดเลยครับ เพราะฉะนั้นไม่ต้องไปพูดถึงวิธีการแก้ไขปัญหา (พวกคุณมองภาพไม่ออกแม้แต่คนเดียว)



DOS Version xxx - Version 6.2 มีคำสั่งนี้ให้ใช้แล้ว
Butil
Futil

(มีใครสักกี่คนที่จะรู้ Algorithm โบราณเหล่านี้)

--- เขียน/อ่าน TextFile/etc ขนาด 1GB ใช้เวลาแค่ 10-20 วินาที (2-1000 ล้านบรรทัด)

โปรดพิจารณาเป็นเรื่องความเชื่อของแต่ละบุคคล http://www.windows-commandline.com/how-to-create-large-dummy-file/
Code (XML)
echo "This is just a sample line appended to create a big file.. " > dummy.txt
for /L %i in (1,1,24) do type dummy.txt >> dummy.txt



ปล. เพราะแต่ละคนใช้ DOS ไม่เป็น (ลืมมันไปหมดแล้ว)


ประวัติการแก้ไข
2014-09-05 12:02:57
2014-09-05 12:10:54
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 12:01:39 By : หน้าฮี
 


 

No. 12



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



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


นางสาวสมศรี เปิดไฟล์ xxx.xls/xxx.xlsx/etc file. แบบ Exclusive แล้วเราไม่สามารถเปิดไฟล์เพื่อ อ่าน/เขียน/etc
--- อันนี้คือข้ออ้างของคนบางเท่านั้น (อย่าว่าแต่ไฟล์ Excel เลย .MDF/.MDB/.ACCDB/.ORACLE ก็ได้
--- เราสามารถเขียนทับ/ให้นางสาวสมศรีเห็น โดยที่ไม่ต้องถามนางสาวสมศรี สักคำ ก็ยังได้เลยครับ
--- (สมศรี พิมพ์ ABC ---> SAVE --> นางสาวสมศรีงง ว่า ข้อความนี้มาได้อย่างไร ---> ABCไปทานอะไรอร่อยอร่อยลิ้นกันสักมื้อไหมครับ)
--- (มันยังทำได้เลยครับ)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 12:16:26 By : หน้าฮี
 


 

No. 13



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



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


อันนี้แนะให้ครับ (ในเบื้องต้น)

Monitor Shared Folder อทิเช่น
\Center
...\DepartmentA\file*.*
...\DepartmentB\file*.*
...
...

แค่นี้ก็ได้แล้วครับ 500 GB/>ล้านไฟล์ มันยังน้อยไปครับ

ปล. เผื่อมองภาพไม่ออกอีก (ทั้งผจก/หน แผนก/ลูกน้อง) ดักจับเฉพาะไฟล์ที่มีการเปลียนแปลงไฟล์เดิม/เพิ่มไฟล์ใหม่/ลบไฟล์เดิมทิ้ง



วันวันหนึ่งมันจะสักกี่ไฟล์กันเชียวครับ (ต่อให้เลิกงานแล้วยังไม่ยอมกลับบ้าน[ขยัน]) ให้เลยครับ 1,000 ไฟล์ รวมทุกฝ่าย/แผนก
--- เราสามารถเขียนทับ/ให้นางสาวสมศรีเห็น โดยที่ไม่ต้องถามนางสาวสมศรี สักคำ ก็ยังได้เลยครับ
------- อันนี้เคยบอกไปแล้วในที่นี้ 2> ครั้งได้(ถ้าผมจำไม่ผิด) หาเอาเองก็แล้วกันครับ


ประวัติการแก้ไข
2014-09-05 12:22:50
2014-09-05 12:24:53
2014-09-05 12:26:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 12:20:35 By : หน้าฮี
 


 

No. 14



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : zarooman เมื่อวันที่ 2014-09-05 10:39:57
รายละเอียดของการตอบ ::
Code
มีปัญหาตรงที่ว่า ไม่สามารถ Get file ที่เปิดอยู่ได้งั้นผมขอแนะนำนะครับลองหาชุดคำสั่งที่ใช้ เช็คว่าไฟลไหนที่เปิดอยู่ก็ไม่ต้องไปเปิดมันแต่ก็อปปี้มาไว้ที่เครื่อง แล้วเปลี่ยนพาร์ทมาเปิดที่เครื่องแทนส่วนไฟล์ที่ปิดอยู่ก็ทำตามเดิม นั่นน่าจะแก้ไขได้นะครับ ปกติผมเขียน VB แต่ C# ผมแค่หางอึ่ง ขออภัยด้วยครับ




ผมก็เขียนไม่เป็นครับ C# (ผมอาศัยลูกมั่วเอา Copy VB ---> Free Convert Tool ---> C#)
(อันนี้ผมพูดจริงนะครับไม่ได้โกหก +55555)


ปล. ผมมีเหตุผลเสมอที่จะไม่ฝากชีวิตเอาไว้กับ VB/C#/etc (ดัก) (แต่สำหรับคนที่มีความพยายามมากเกินพอ มันดักไม่ได้ครับ (แต่มีน้อยมากฯ 1 ในล้าน กระมังครับ))


ประวัติการแก้ไข
2014-09-05 12:34:35
2014-09-05 12:35:30
2014-09-05 12:37:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-05 12:30:40 By : หน้าฮี
 


 

No. 15



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



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

ตอบความคิดเห็นที่ : 14 เขียนโดย : หน้าฮี เมื่อวันที่ 2014-09-05 12:30:40
รายละเอียดของการตอบ ::
ผมไม่เข้าใจความหมายที่คุณสื่อครับ
ผมไม่ได้มั่ว C#นะครับเพียงแต่ผมไม่ถนัดในการใช้งาน Tool หรือโครงสร้างภาษา มันเข้าใจยากหน่ะครับ
สำหรับ ปล.ของคุณ ผมไม่เข้าใจครับ
กระทู้คนเข้ามาตั้งคำถามเพียงเพราะแค่อยากได้คำตอบ และเหตุผลที่เกิดปัญหา ไม่อยากได้ข้อคิดอะไรหรอกนะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-06 14:35:25 By : zarooman
 


 

No. 16



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



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

พี่เค้าเป็นงี้แหละครับอย่าถือแกเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-06 17:22:49 By : lamaka.tor
 


 

No. 17



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



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

ขออภัยด้วยครับผมสมาชิกใหม่ เลยไม่ค่อยรู้เรื่องนิสัยกับใครเท่าไรครับ ต้องขออภัยด้วยครับ ที่ถามไปแบบนั้น


ประวัติการแก้ไข
2014-09-06 17:50:49
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-06 17:48:53 By : zarooman
 


 

No. 18



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



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


สวัสดีพี่เจ้าของกระทู้คะรบกวนพี่ช่วยสอนหน่อยได้ไหมคะ ว่าเราจะสามารถเลือก คอลัมน์ หรือแถวบางแถว ใน excel มาลง Datagridview ได้อย่างไงบ้าง ขอบคุณคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-21 10:59:51 By : Preeyapan
 


 

No. 19



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



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

ตอบความคิดเห็นที่ : 18 เขียนโดย : Preeyapan เมื่อวันที่ 2015-09-21 10:59:51
รายละเอียดของการตอบ ::
Code (VB.NET)
Private Sub RefreshData()

        'ตั้งค่า OleDbConnection
        Dim _ConnectionString As String
        Dim conn As System.Data.OleDb.OleDbConnection
        'loop เพื่อ เอาข้อมูลในแต่ละไฟล์มาใส่ใน DataGridView
        For Each myFileInfo As String In System.IO.Directory.GetFiles(txtPath.Text, ".xlsx")
            ListBox1.Items.Add(myFileInfo)
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
            _ConnectionString = (Convert.ToString("Data Source=") & myFileInfo) + "; Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;"
            conn = New System.Data.OleDb.OleDbConnection(_ConnectionString)
            conn.Open()
             'mg_Kg$Print_Area คือ sheet ครับ
            Dim adapter As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM `mg_Kg$Print_Area`", conn)
            Dim ds As New System.Data.DataSet()
            adapter.Fill(ds)
            If DataGridView2.RowCount - 1 > 0 Then
                For i As Integer = 0 To DataGridView2.RowCount - 1
                    ds.Tables(0)(i).Item(0).ToString()
                    'เอา เอาข้อมูลในแต่ละ Rows มาใส่ใน DataGridView
                    ' ds.Tables(0)(i).Item(0).ToString() ก็คือคอลัมน์แรกใน ตารางครับที่เหลือก็น่าจะไปต่อได้แล้วนะครับ
                    DataGridView1.Rows.Add(ds.Tables(0)(i).Item(0).ToString(), ds.Tables(0)(i).Item(1).ToString(), ds.Tables(0)(i).Item(2).ToString())
                Next
            End If
            conn.Close()
        Next

        ' แล้วมันก็ครบทุกไฟล์ 55555

    End Sub


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-21 11:39:26 By : lamaka.tor
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ผมจะดึงไฟล์ Excel ที่เปิดอยู่มาลงใน DataGridView ได้ยังไงครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 00
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 อัตราราคา คลิกที่นี่