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,038

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


 

[.NET] ผมจะดึงไฟล์ 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 : 4156 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#)
01.private void RefreshData()
02.        {
03.                Cursor = Cursors.WaitCursor;
04.                List<string> _file = new List<string>();
05.                _file = TORServices.clsFile_Path.GetFilesRecursive(TORServices.clsPathData.Path_AllReport, "*.Report");///@"H:\REPORT"
06.                if (_file.Count <= 0) { Cursor = Cursors.Default; return; }
07.                if (dt != null) { dt = null; }
08.                dt = new DataTable();
09.                dt.Columns.Add(new DataColumn("SampleID",typeof(string)));
10.                dt.Columns.Add(new DataColumn("Parameter", typeof(string)));
11.                dt.Columns.Add(new DataColumn("Value", typeof(string)));
12.                dt.Columns.Add(new DataColumn("Date", typeof(string)));
13.                dt.Columns.Add(new DataColumn("ผู้วิเคราะห์", typeof(string)));
14.                dt.Columns.Add(new DataColumn("Seleced", typeof(Boolean)));
15.        foreach(string f in _file)
16.                {
17.                    dgvmgKg.DataSource =  GetTable("SELECT * FROM `mg_Kg$Print_Area`", f).DefaultView;
18.                    dgvmgL.DataSource = GetTable("SELECT * FROM `mg_L$Print_Area`", f).DefaultView;
19.                        for (int i = 0; i < this.dgvmgL.RowCount - 1; i++)
20.                        {
21.                            if (this.dgvmgL[this.dgvmgL.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
22.                                {
23.                                DataRow dr = dt.NewRow();
24.                                dr["SampleID"] = this.dgvmgL[this.dgvmgL.ColumnCount - 6, i].Value.ToString().Trim();
25.                                dr["Parameter"] = this.dgvmgL[this.dgvmgL.ColumnCount - 5, i].Value.ToString().Trim();
26.                                dr["Value"] = this.dgvmgL[this.dgvmgL.ColumnCount - 4, i].Value.ToString().Trim();
27.                                dr["Date"] = this.dgvmgL[this.dgvmgL.ColumnCount - 3, i].Value.ToString().Trim();
28.                                dr["ผู้วิเคราะห์"] = this.dgvmgL[this.dgvmgL.ColumnCount - 2, i].Value.ToString().Trim();
29.                                dr["Seleced"] = false;
30.                                dt.Rows.Add(dr);
31.                                }
32.                        }
33.  
34.                    for (int i = 0; i < this.dgvmgKg.RowCount - 1; i++)
35.                        {
36.                            if (this.dgvmgKg[this.dgvmgKg.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
37.                                {
38.                                DataRow dr = dt.NewRow();
39.                                dr["SampleID"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 6, i].Value.ToString().Trim();
40.                                dr["Parameter"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 5, i].Value.ToString().Trim();
41.                                dr["Value"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 4, i].Value.ToString().Trim();
42.                                dr["Date"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 3, i].Value.ToString().Trim();
43.                                dr["ผู้วิเคราะห์"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 2, i].Value.ToString().Trim();
44.                                dr["Seleced"] = false;
45.                                dt.Rows.Add(dr);
46.                                }
47.                        }
48.                }
49.                dataGridView1.DataSource =dt ;
50.                dataGridView1.Columns[3].Width = 120;
51.                dataGridView1.Columns[4].Width = 150;
52.                dataGridView1.Columns[5].Width = 60;
53.                dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
54.                Cursor = Cursors.Default;
55.        }
56.        private System.Data.DataTable GetTable(string _SQL, string FileExcel)
57.        {
58.           
59.            string _ConnectionString = @"Data Source=" + FileExcel + "; Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;";
60. 
61.            System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(_ConnectionString);
62.            conn.Open();
63.            string strQuery = _SQL;
64.            System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
65.            System.Data.DataSet ds = new System.Data.DataSet();
66.            adapter.Fill(ds);
67.            return ds.Tables[0];
68. 
69.        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
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#)
01.public static bool IsFileLocked(FileInfo file)
02.   {
03.       FileStream stream = null;
04. 
05.       try
06.       {
07.           stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
08.       }
09.       catch (IOException)
10.       {
11.           //the file is unavailable because it is:
12.           //still being written to
13.           //or being processed by another thread
14.           //or does not exist (has already been processed)
15.           return true;
16.       }
17.       finally
18.       {
19.           if (stream != null)
20.               stream.Close();
21.       }
22. 
23.       //file is not locked
24.       return false;
25.   }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
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#)
01.private void RefreshData()
02.        {
03.                Cursor = Cursors.WaitCursor;
04.                List<string> _file = new List<string>();
05.                _file = TORServices.clsFile_Path.GetFilesRecursive(@"E:\REPORT", "*.Report");///@"H:\REPORT"
06.                if (_file.Count <= 0) { Cursor = Cursors.Default; return; }
07.                if (dt != null) { dt = null; }
08.                dt = new DataTable();
09.                dt.Columns.Add(new DataColumn("SampleID",typeof(string)));
10.                dt.Columns.Add(new DataColumn("Parameter", typeof(string)));
11.                dt.Columns.Add(new DataColumn("Value", typeof(string)));
12.                dt.Columns.Add(new DataColumn("Date", typeof(string)));
13.                dt.Columns.Add(new DataColumn("ผู้วิเคราะห์", typeof(string)));
14.                dt.Columns.Add(new DataColumn("Seleced", typeof(Boolean)));
15.                string FileExcel;
16.        foreach(string _f in _file)
17.                {
18.                    //เช็คการเปิดไฟล์ถ้าเปิดให้ก๊อบไปวางที่ Temp
19.                    if (!(TORServices.clsFile_Path.IsFileExcelOpen(_f)))
20.                    {
21.                        FileExcel = System.IO.Path.GetTempPath() + String.Format("{0:ddMMyyyy HHmmss}", DateTime.Now) + ".Report";
22.                        System.IO.File.Copy(_f, FileExcel);
23.                    }
24.                    else
25.                    {
26.                        FileExcel = _f;
27.                    }
28.                  //  FileExcel = _f;
29.                    dgvmgKg.DataSource =   GetTable("SELECT * FROM `mg_Kg$Print_Area`", FileExcel).DefaultView;
30.                    dgvmgL.DataSource = GetTable("SELECT * FROM `mg_L$Print_Area`", FileExcel).DefaultView;
31.                        for (int i = 0; i < this.dgvmgL.RowCount - 1; i++)
32.                        {
33.                            if (this.dgvmgL[this.dgvmgL.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
34.                                {
35.                                DataRow dr = dt.NewRow();
36.                                dr["SampleID"] = this.dgvmgL[this.dgvmgL.ColumnCount - 6, i].Value.ToString().Trim();
37.                                dr["Parameter"] = this.dgvmgL[this.dgvmgL.ColumnCount - 5, i].Value.ToString().Trim();
38.                                dr["Value"] = this.dgvmgL[this.dgvmgL.ColumnCount - 4, i].Value.ToString().Trim();
39.                                dr["Date"] = this.dgvmgL[this.dgvmgL.ColumnCount - 3, i].Value.ToString().Trim();
40.                                dr["ผู้วิเคราะห์"] = this.dgvmgL[this.dgvmgL.ColumnCount - 2, i].Value.ToString().Trim();
41.                                dr["Seleced"] = false;
42.                                dt.Rows.Add(dr);
43.                                }
44.                        }
45.  
46.                    for (int i = 0; i < this.dgvmgKg.RowCount - 1; i++)
47.                        {
48.                            if (this.dgvmgKg[this.dgvmgKg.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
49.                                {
50.                                DataRow dr = dt.NewRow();
51.                                dr["SampleID"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 6, i].Value.ToString().Trim();
52.                                dr["Parameter"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 5, i].Value.ToString().Trim();
53.                                dr["Value"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 4, i].Value.ToString().Trim();
54.                                dr["Date"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 3, i].Value.ToString().Trim();
55.                                dr["ผู้วิเคราะห์"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 2, i].Value.ToString().Trim();
56.                                dr["Seleced"] = false;
57.                                dt.Rows.Add(dr);
58.                                }
59.                        }
60.                }
61.                dataGridView1.DataSource =dt ;
62.                dataGridView1.Columns[3].Width = 120;
63.                dataGridView1.Columns[4].Width = 150;
64.                dataGridView1.Columns[5].Width = 60;
65.                dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
66.                Cursor = Cursors.Default;
67.        }
68.        private System.Data.DataTable GetTable(string _SQL, string FileExcel)
69.        {
70.           
71.            string _ConnectionString = @"Data Source=" + FileExcel + "; Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;";
72. 
73.            System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(_ConnectionString);
74.            conn.Open();
75.            string strQuery = _SQL;
76.            System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
77.            System.Data.DataSet ds = new System.Data.DataSet();
78.            adapter.Fill(ds);
79.            return ds.Tables[0];
80. 
81.        }
82.public static bool IsFileExcelOpen(string FileName)
83.        {
84.            try
85.            {
86.                Stream s = File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.None);
87. 
88.                s.Close();
89. 
90.                return true;
91.            }
92.            catch (Exception)
93.            {
94.                return false;
95.            }
96.        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
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)
1.echo "This is just a sample line appended to create a big file.. " > dummy.txt
2.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)
01.Private Sub RefreshData()
02. 
03.        'ตั้งค่า OleDbConnection
04.        Dim _ConnectionString As String
05.        Dim conn As System.Data.OleDb.OleDbConnection
06.        'loop เพื่อ เอาข้อมูลในแต่ละไฟล์มาใส่ใน DataGridView
07.        For Each myFileInfo As String In System.IO.Directory.GetFiles(txtPath.Text, ".xlsx")
08.            ListBox1.Items.Add(myFileInfo)
09.            If conn.State = ConnectionState.Open Then
10.                conn.Close()
11.            End If
12.            _ConnectionString = (Convert.ToString("Data Source=") & myFileInfo) + "; Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;"
13.            conn = New System.Data.OleDb.OleDbConnection(_ConnectionString)
14.            conn.Open()
15.             'mg_Kg$Print_Area คือ sheet ครับ
16.            Dim adapter As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM `mg_Kg$Print_Area`", conn)
17.            Dim ds As New System.Data.DataSet()
18.            adapter.Fill(ds)
19.            If DataGridView2.RowCount - 1 > 0 Then
20.                For i As Integer = 0 To DataGridView2.RowCount - 1
21.                    ds.Tables(0)(i).Item(0).ToString()
22.                    'เอา เอาข้อมูลในแต่ละ Rows มาใส่ใน DataGridView
23.                    ' ds.Tables(0)(i).Item(0).ToString() ก็คือคอลัมน์แรกใน ตารางครับที่เหลือก็น่าจะไปต่อได้แล้วนะครับ
24.                    DataGridView1.Rows.Add(ds.Tables(0)(i).Item(0).ToString(), ds.Tables(0)(i).Item(1).ToString(), ds.Tables(0)(i).Item(2).ToString())
25.                Next
26.            End If
27.            conn.Close()
28.        Next
29. 
30.        ' แล้วมันก็ครบทุกไฟล์ 55555
31. 
32.    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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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