C# Import ข้อมูลใน excel ขึ้น datatable แล้วเอา datatable เข้า database ภาษาไทยเป็น ??
คือต้องการเอาไฟล์ excel ใส่โปรแกรมที่พัฒนาแบบ Window Form Application ใช้ C# คือตอนนี้เอา excel ทำเป็น datatable ได้แล้ว แล้วเอา datatable ขึ้น datagridview ยังเป็นภาษาไทยอ่ะฮะ แต่พอเอา datatable เรียกทีละช่องใส่ข้อมูลลงในฐานข้อมูล ในฐานภาษาไทยจะเป็น ?? ทั้งหมดเลยอ่ะฮะ พอมีทางแก้บ้างไหมอ่ะฮะ
Code
private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog openfile = new OpenFileDialog();
openfile.Title = "Select file";
openfile.Filter = "Excel Sheet(*.xls,*.xlsx)|*.xls;*.xlsx|All Files(*.*)|*.*";
openfile.FilterIndex = 1;
openfile.RestoreDirectory = true;
if (openfile.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openfile.FileName;
System.Data.DataTable dtb = ConvertToDataTable(textBox1.Text);
dataGridView1.DataSource = dtb;
}
}
public System.Data.DataTable ConvertToDataTable(string path)
{
try
{
object rowIndex = 1;
dt = new System.Data.DataTable();
DataRow row;
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(path, 0, true, 5, "", "", true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.ActiveSheet;
int temp = 1;
while (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, temp]).Value2 != null)
{
dt.Columns.Add(Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, temp]).Value2));
temp++;
}
rowIndex = Convert.ToInt32(rowIndex) + 1;
int columnCount = temp;
temp = 1;
while (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, temp]).Value2 != null)
{
row = dt.NewRow();
for (int i = 1; i < columnCount; i++)
{
row[i - 1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, i]).Value2);
}
dt.Rows.Add(row);
rowIndex = Convert.ToInt32(rowIndex) + 1;
temp = 1;
}
app.Workbooks.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error:" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return dt;
}
private void btnImportDB_Click(object sender, EventArgs e)
{
if(dt!=null)
{
try
{
cn.ConnectionString = connSt;
cmd.Connection = cn;
cn.Open();
cmd.CommandText = "delete from info";
cmd.ExecuteNonQuery();
for (int i = 0; i < dt.Rows.Count; i++)
{
cmd.CommandText = "insert into info (idst,name,sname,sex,class,room,number) values ('" + dt.Rows[i]["idst"].ToString()
+ "','" + dt.Rows[i]["name"].ToString() + "','" + dt.Rows[i]["sname"].ToString() + "','" + dt.Rows[i]["sex"].ToString()
+ "','" + dt.Rows[i]["class"].ToString() + "','" + dt.Rows[i]["room"].ToString() + "','" +
dt.Rows[i]["number"].ToString() + "')";
cmd.ExecuteNonQuery();
}
MessageBox.Show("Success!", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
cn.Close();
}
}
}
ตอนนี้ทำโครงงานอยู่อ่ะฮะ เรียกว่าเขียนC#เป็นโครงงานอันแรกเลยก็ได้ฮะ ขอความกรุณาด้วยนะฮะ ขอบคุณทุกคนที่มาให้คำแนะนำล่วงหน้าเลยนะฮะ ขอบคุณฮะTag : Ms SQL Server 2012, Win (Windows App), C#, Windows
ประวัติการแก้ไข 2015-06-06 21:58:14
Date :
2015-06-06 21:56:42
By :
npmomo
View :
3524
Reply :
8
กรณีที่ decode()
Code (C#)
public static string DecodeFromUtf8(this string utf8String)
{
// copy the string as UTF-8 bytes.
byte[] utf8Bytes = new byte[utf8String.Length];
for (int i=0;i<utf8String.Length;++i) {
//Debug.Assert( 0 <= utf8String[i] && utf8String[i] <= 255, "the char must be in byte's range");
utf8Bytes[i] = (byte)utf8String[i];
}
return Encoding.UTF8.GetString(utf8Bytes,0,utf8Bytes.Length);
}
DecodeFromUtf8("d\u00C3\u00A9j\u00C3\u00A0"); // déjà
Date :
2015-06-07 09:30:42
By :
mr.win
ขอบคุณนะฮะ แต่ว่ายังไม่ได้เลยอ่าา T_T พอมีวิธีอื่นอีกไหมอ่ะฮะ
Date :
2015-06-07 18:27:30
By :
npmomo
แล้ว Column ที่เก็บข้อมูลเป็น nvarchar รึเปล่า
Date :
2015-06-10 20:15:36
By :
watcharop
มีโค้ดบ้านๆมาฝากครับ
จะได้ไม่ต้องวนลูป
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; }
}
การใช้งาน
Code (C#)
DataTable _dt1 = TORServices.clsDatabaseServices.GetTableFormExcel("SELECT * FROM `mg_Kg$Print_Area`", FileExcel);
if (_dt1 != null) { dgvmgKg.DataSource = _dt1; }
Date :
2015-06-11 08:24:22
By :
lamaka.tor
Column ที่เก็บข้อมูลเป็น nvarchar อีกเสียง ครับ
Date :
2015-06-11 15:34:34
By :
arktae
ขอบคุณทุกคนมากเลยนะฮะๆ ตอนนี้ได้แล้วฮะ ●□● >♢<
Date :
2015-06-11 15:39:12
By :
npmomo
Load balance : Server 00