|
|
|
ดึงข้อมูลจาก Excel มาใส่ในแต่ละที่เช่นใน textbox dategridview |
|
|
|
|
|
|
|
ใช้อะไรอ่าน excel
|
|
|
|
|
Date :
2016-04-01 13:24:34 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วเรียก interop มาอ่านได้ยัง
|
|
|
|
|
Date :
2016-04-01 13:35:40 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using interop แล้วก็สร้าง intance ของ excel แล้วก็เลือก sheet วนลูป row อ่านข้อมูลในแต่ละ cell
|
|
|
|
|
Date :
2016-04-01 13:44:13 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ ขอบคุณมากครับ
โค๊ดประมานนี้ครับ
Code (C#)
string nameExcel = "";
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "C# Corner Open File Dialog";
fdlg.InitialDirectory = @"C:\";
fdlg.Filter = "All files (*.*)|*.*|All Files (*.*)|*.xlsx";
fdlg.FilterIndex = 2;
fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fdlg.FileName;
}
nameExcel = fdlg.FileName;
excel.Application App;
excel.Workbook workBook;
excel.Worksheet worksheet;
string strtemplate = nameExcel;
App = new excel.Application();
workBook = App.Workbooks.Open(nameExcel, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
worksheet = (excel.Worksheet)workBook.Worksheets.get_Item(1);
textBox2.Text = worksheet.get_Range("a3").Value2.ToString();
|
ประวัติการแก้ไข 2016-04-01 15:20:51
|
|
|
|
Date :
2016-04-01 14:34:43 |
By :
phuriwat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2016-04-01 15:21:03 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. เราต้องรู้ก่อนว่า excel มันมีข้อมูลสิ้นสุดตรงไหน
2. for loop เพื่อเอาข้อมูลมาลงใน datatable หรือ Datagrid
ประมาณนี้ครับ
Code (C#)
DataTable 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("ผู้ตรวจสอบ", typeof(string)));
dt.Columns.Add(new DataColumn("Seleced", typeof(Boolean)));
OfficeOpenXml.ExcelPackage package = new OfficeOpenXml.ExcelPackage(new System.IO.FileInfo(FileExcel));
OfficeOpenXml.ExcelWorksheet sheet = package.Workbook.Worksheets[1];
for (int i = 1; i < sheet.Dimension.End.Row; i++)
{
item = 15;
if (sheet.Cells[i, item].Value != null)
{
if (sheet.Cells[i, item].Value.ToString() != "" && int.TryParse(sheet.Cells[i, item].Value.ToString().Trim().Substring(0, 1), out _i) != true)
{
DataRow dr = dt.NewRow();
sampleID = sheet.Cells[i, item].Value.ToString();
dr["SampleID"] =rgx.Match(sampleID).Groups[1].Value.ToUpper() + " " +string.Format("{0:0000}", int.Parse(rgx.Match(sampleID).Groups[2].Value));
dr["Parameter"] = sheet.Cells[i, item + 1].Value;
dr["Value"] = sheet.Cells[i, item + 2].Value.ToString();
dr["Date"] = dd;
dr["ผู้วิเคราะห์"] = sheet.Cells[i, item + 4].Value;
dr["ผู้ตรวจสอบ"] = sheet.Cells[i, item + 5].Value;
dr["Seleced"] = false;
dt.Rows.Add(dr);
}
}
}
dataGridView1.Invoke(new Action(() =>
{
dataGridView1.DataSource = dt;
dataGridView1.Columns[2].Width = 120;
dataGridView1.Columns[3].Width = 150;
dataGridView1.Columns[4].Width = 180;
dataGridView1.Columns[5].Width = 180;
dataGridView1.Columns[6].Width = 80;
dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
}));
|
|
|
|
|
Date :
2016-04-01 15:37:17 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใจเยนๆอย่ายึดติดครับ
Code (C#)
for (int i = 1; i < 555; i++) //เอาเยอะเข้าว่า
{
item = 15;
if (sheet.Cells[i, item].Value == null)
{
return; //แบบนี้หยุด
}
}
แต่
Code (C#)
for (int i = 1; i < sheet.Rows.End; i++) //แบบนี้หยุด
{
}
มองให้ต่างกันครับ
|
|
|
|
|
Date :
2016-04-01 16:07:49 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
for (int i = 1; i < sheet.Rows.End; i++) //แบบนี้หยุด
{
// จัดไป
}
|
|
|
|
|
Date :
2016-04-04 08:09:33 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตามตัวอย่างเลยครับ
|
|
|
|
|
Date :
2016-04-05 13:20:10 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 25 เขียนโดย : lamaka.tor เมื่อวันที่ 2016-04-05 15:13:53
รายละเอียดของการตอบ ::
ยัง ไม่ได้เลยครับ ผมไม่เข้าใจตรง for อะ มันต้องทำยังไงอ่าครับ ต้องเพิ่มเติมตรงไหนยัง ไง งงครับ
อันนี้ต้องเพิ่มเติมยังไงครับ
อันนี้โค๊ดตอนนี้
Code (C#)
string nameExcel = "";
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "C# Corner Open File Dialog";
fdlg.InitialDirectory = @"C:\Users\Administrator.UDZOWK481SBWBZN\Desktop\";
fdlg.Filter = "All files (*.*)|*.*|All Files (*.*)|*.xlsx";
fdlg.FilterIndex = 2;
fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fdlg.FileName;
}
nameExcel = fdlg.FileName;
excel.Application App;
excel.Workbook workBook;
excel.Worksheet worksheet;
string strtemplate = nameExcel;
App = new excel.Application();
workBook = App.Workbooks.Open(nameExcel, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
worksheet = (excel.Worksheet)workBook.Worksheets.get_Item(1);
Microsoft.Office.Interop.Excel.Range range = worksheet.UsedRange;
int lastColumn = range.Columns.Count;
int lastRow = range.Rows.Count;
textBox2.Text = worksheet.get_Range("c4").Value2.ToString();
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("1", typeof(string)));
dt.Columns.Add(new DataColumn("2", typeof(string)));
dt.Columns.Add(new DataColumn("3", typeof(string)));
dt.Columns.Add(new DataColumn("4", typeof(string)));
dt.Columns.Add(new DataColumn("5", typeof(string)));
dt.Columns.Add(new DataColumn("6", typeof(string)));
dt.Columns.Add(new DataColumn("7", typeof(string)));
for (int i; i = worksheet.Rows.End; i++)
{
}
|
ประวัติการแก้ไข 2016-04-18 15:44:09
|
|
|
|
Date :
2016-04-18 15:43:12 |
By :
phuriwat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i; i = range.Rows.Count; i++)
{
//ว่าเข้าไปนั่น 5555
}
|
|
|
|
|
Date :
2016-04-18 16:46:09 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i; i <= range.Rows.Count; i++)
{
//ว่าเข้าไปนั่น 5555
}
ติดตรงไหน ยังไง รึ
|
|
|
|
|
Date :
2016-04-19 08:32:07 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตรงที่เดิมก็ถูกแล้วครับ
เอางี้ ให้ยึด วัตถุประสงค์ไว้ แล้ว หาโค๊ดไปใส่ให้ได้ตาม วัตถุประสงค์ ง่ายๆบ้านๆ ไม่มาก และ ไม่น้อยเกินไป
|
|
|
|
|
Date :
2016-04-20 08:31:19 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 32 เขียนโดย : phuriwat เมื่อวันที่ 2016-04-20 10:22:21
รายละเอียดของการตอบ ::
แสดงว่า วัตถุประสงค์ไม่กระจ่าง ครับ
ความจริง เรื่องโค๊ดนี่ถือว่าเป็นเรื่องที่ง่ายมากๆเลยถ้าเรามีเป้าหมายที่ชัดเจนครับ
รูปแบบการเขียนโปรแกรมผมมีบ้านๆแบบนี้
1.วัตถุประสงค์ของโปรแกรม เช่นมีไว้สำหรับใช้จัดการ karaoke
2.ขั้นตอนการทำงานของโปรแกรม ก็เหมือน input output บ้านๆ
3.ลองทำมือหรือใช้อะไรที่ถนัดทำมันไปก่อนอย่าเพิ่งลงมือเขียนโปรแกรม
4.ศึกษาโค้ดแต่ละขั้นตอนตามข้อ 2
5.เมื่อคล่องแล้วก็มาลงมือทำกัน 55555
6.แก้ไขโค้ดเรื่อยๆเพื่อให้ทำงานได้ดีขึ้น
เอาละ ติดตรงไหนรึ
เห็นบอกแต่ว่าติดๆๆๆๆ ผมยังงงยุเลยว่าติดตรงไหน
|
|
|
|
|
Date :
2016-04-20 11:19:48 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าจะให้ผ่าน DataTable ก็ศึกษาเรื่อง DataTable Add rows
ถ้าจะให้ผ่าน Datagrid ก็ศึกษาเรื่อง Datagrid Add rows
เลือกได้เรื่องใดเรื่องหนึ่งครับ
ขอบอกว่าข้อมูลเยอะมากกกกกกกกกกกกกก
10 ปากว่าไม่เท่าตาบอดคับ 55555
|
|
|
|
|
Date :
2016-04-20 14:01:41 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ให้ผ่าน DataTable หรือ ให้ผ่าน Datagrid เลยละครับ
for (int i; i <= range.Rows.Count; i++)
{
// เอามันมาลงตรงนี้ worksheet.get_Range("c4").Value2.ToString()
}
ไม่เอาช่อง B ก็ไม่ต้องเรียกใช้สิครับ
จะ ข้าม ชิด ฉาก โยก ย้าย ก็ สร้างเงื่อนไขมาได้เลย ครับ
ให้ผ่าน DataTable ก็ อ่าน No. 13
ให้ผ่าน Datagrid ก็ Datagrid.Rows.Add(// เอามันมาลงตรงนี้)
|
|
|
|
|
Date :
2016-04-20 18:22:53 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
item ก็คือ comlumn ครับ
ไม่ต้องสนใจมัน เป็นแค่แนวทาง
ถ้างงอยู่ก็ไปอ่านเกี่ยวกับ C# การใช้งาน Microsoft.Office.Interop.Excel เอา
|
|
|
|
|
Date :
2016-04-21 08:15:06 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
for (int i = 1; i < srange.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["1"] =worksheet.get_Range("a" + i).Value2.ToString();
dr["2"] = worksheet.get_Range("c" + i).Value2.ToString();
dr["3"] = worksheet.get_Range("d" + i).Value2.ToString();
dr["4"] = worksheet.get_Range("e" + i).Value2.ToString();
dr["5"] = worksheet.get_Range("f" + i).Value2.ToString();
dr["6"] = worksheet.get_Range("g" + i).Value2.ToString();
dr["7"] = worksheet.get_Range("h" + i).Value2.ToString();
dt.Rows.Add(dr);
}
}
}
dataGridView1.DataSource = dt;
หรือ
Code (C#)
for (int i = 1; i < srange.Rows.Count; i++)
{
dataGridView1.Rows.Add( worksheet.get_Range("a" + i).Value2.ToString(),
worksheet.get_Range("c" + i).Value2.ToString(),
worksheet.get_Range("d" + i).Value2.ToString(),
worksheet.get_Range("e" + i).Value2.ToString(),
worksheet.get_Range("f" + i).Value2.ToString(),
worksheet.get_Range("g" + i).Value2.ToString(),
worksheet.get_Range("h" + i).Value2.ToString())
}
}
}
|
|
|
|
|
Date :
2016-04-21 08:42:23 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลอง อันนี้ a10 ได้แต่ พอ +i ไปก็ขึ้นเหมือนกันอะครับ
Code (C#)
for (int i = 1; i <= range.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["1"] = worksheet.get_Range("a10"+i).Value2.ToString();
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
|
|
|
|
|
Date :
2016-04-21 12:03:27 |
By :
phuriwat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2016-04-21 12:08:29 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอไปแคะหาคำตอบของปัญหาถึงได้รู้ว่า มันมาจากเจ้า worksheet.get_Range
ก็เลยตัดมันออกไปซะ
Code (C#)
for (int i = 1; i < srange.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["1"] =worksheet.Range("a" + i).Value2.ToString();
dr["2"] = worksheet.Range("c" + i).Value2.ToString();
dr["3"] = worksheet.Range("d" + i).Value2.ToString();
dr["4"] = worksheet.Range("e" + i).Value2.ToString();
dr["5"] = worksheet.Range("f" + i).Value2.ToString();
dr["6"] = worksheet.Range("g" + i).Value2.ToString();
dr["7"] = worksheet.Range("h" + i).Value2.ToString();
dt.Rows.Add(dr);
}
}
}
dataGridView1.DataSource = dt;
อันที่จริงก็ต้องขอโทษครับ ที่ผมเอา ท่านเจ้าของกระทู้มาเพราะนึกว่ามันใช้ได้
เลยเป็นเหตุให้ต้องงมหอยกันซักหน่อย 55555
|
|
|
|
|
Date :
2016-04-21 14:15:57 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รูปแบบการใช้งาน Microsoft.Office.Interop.Excel แบบบ้านๆ ก็คงประมาณว่า
1. Add ref Microsoft.Office.Interop.Excel
2. ประกาศตัวแปรที่จำเป็น Application Workbook และ Worksheet
Code (C#)
string nameExcel = @"I:\ALS.FH.901.1_2016.xlsx";
Microsoft.Office.Interop.Excel.Application App= new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workBook= App.Workbooks.Open(nameExcel, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Worksheets.get_Item(1);
3. เรียกใช้งานตามต้องการ
Code (C#)
for (int i = 1; i < 10; i++)
{
MessageBox.Show("" + worksheet.Range["B"+i].Value.ToString());
}
4. ปิดทุกอย่างที่เปิดมา
Code (C#)
worksheet = null;
workBook.Close();
App.Quit();
น่าจะประมาณนี้นะครับ
|
|
|
|
|
Date :
2016-04-21 14:27:09 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันผิดตั้งแต่ "a10"+i แล้ว
ดูดีๆ
|
|
|
|
|
Date :
2016-04-21 14:51:28 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
for (int i = 1; i < 100; i++)
{
MessageBox.Show((worksheet.Range["B" + i].Value==null)?"ว๊าง...ว่าง": worksheet.Range["B" + i].Value.ToString());
}
ก็คงประมาณนี้ครับ
|
|
|
|
|
Date :
2016-04-21 15:41:34 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จัดไปอย่าได้เสียครับ
|
|
|
|
|
Date :
2016-04-21 16:58:20 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2016-04-22 10:46:40 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|