从Excel表导入图像到SQL Server表C#
在这里,我想从我的Excel表插入到SQL Server
表中使用C#代码的所有数据
我有这样的数据的Excel工作表
ID Name Designation ProfilePicture -------------------------------------------- 1 ABC Manager C:\Pictures\1.jpg 2 DEF Asst.Manager C:\Pictures\2.jpg
我有代码插入数据到表中
String filePath = filePathText.Text; String fileExtension = "Excel 12.0"; if (filePath != null) { String xlsConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=" + "\"" + fileExtension + ";HDR=YES;\""; String sqlConnection = "Your Connection String"; //Connection to Excel work book OleDbConnection xlsConnectionString = new OleDbConnection(xlsConnection); //Fetch data from Excel OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Designation],[ProfilePicture] from [Sheet1$]", xlsConnectionString); xlsConnectionString.Open(); OleDbDataReader dReader; dReader = cmd.ExecuteReader(); SqlBulkCopy sqlBulk = new SqlBulkCopy(sqlConnection); //Destination table name sqlBulk.DestinationTableName = "EXCEL_DATA"; sqlBulk.WriteToServer(dReader); xlsConnectionString.Close(); }
这段代码运行,如果我点击button。
我的问题是,我如何从Excel工作表上载图片(工作表有图片的path)。 到SQL Server
表。 我想通过使用Excel Sheet中提供的Imagepath来获取图片,并将其作为varbinary(MAX)
存储在SQL Server
。
感谢真正有效的人发布答案。 最后我自己解决了这个问题。
下面是通过使用Excel sheet
提供的path帮助将图像插入到SQL Server
的代码。
private void insert_Click(object sender, EventArgs e) { UInt64 ID = 0; String Name = String.Empty; String Designation = String.Empty; String ProfilePicture = String.Empty; String filePath = filePathText.Text; Excel.Application xlApp = null; Excel.Workbook xlWorkbook = null; Excel._Worksheet xlWorksheet = null; Excel.Range xlRange = null; String sqlConnectionString = "Your Connection String goes here"; String insertRecord = "INSERT_USER_RECORDS"; SqlConnection sqlConnection = new SqlConnection(sqlConnectionString); SqlCommand sqlCommand = new SqlCommand(insertRecord, sqlConnection); sqlCommand.CommandType = CommandType.StoredProcedure; sqlConnection.Open(); if (filePath != null) { try { xlApp = new Excel.Application(); xlWorkbook = xlApp.Workbooks.Open(filePath); xlWorksheet = (Excel._Worksheet)xlWorkbook.Sheets[1]; xlRange = xlWorksheet.UsedRange; int rowCount = xlRange.Rows.Count; int colCount = xlRange.Columns.Count; for (int row = 1; row <= rowCount; row++) { for (int col = 1; col <= colCount; col++) { MessageBox.Show((xlRange.Cells[row, col] as Microsoft.Office.Interop.Excel.Range).Value2.ToString()); // Check xlRange for Every run. And assign values to local variables. Here I just show the values using MsgBox // If you get the Path of Image then call the function to Convert Image into byte // Convert Image to Byte Function definition. /* System.IO.FileStream fs = new System.IO.FileStream(ProfilePicture, System.IO.FileMode.Open); Byte[] imageAsBytes = new Byte[fs.Length]; fs.Read(imageAsBytes, 0, imageAsBytes.Length); fs.Close(); return imageAsBytes; */ } sqlCommand.Parameters.Clear(); sqlCommand.Parameters.Add("@Name", SqlDbType.NVarChar).Value = FirstName; sqlCommand.Parameters.Add("@Designation", SqlDbType.NVarChar).Value = LastName; sqlCommand.Parameters.Add("@ProfilePicture", SqlDbType.VarBinary).Value = imageAsBytes; sqlCommand.Parameters.Add("@ID", SqlDbType.BigInt).Value = ID; sqlCommand.ExecuteNonQuery(); } MessageBox.Show(Path.GetFileName(filePath) + "is Successfully imported to SQL Server", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { //Release All objects and close the Connection to prevent the Excel file from lock. sqlConnection.Close(); GC.Collect(); GC.WaitForPendingFinalizers(); Marshal.FinalReleaseComObject(xlRange); Marshal.FinalReleaseComObject(xlWorksheet); xlWorkbook.Close(Type.Missing, Type.Missing, Type.Missing); Marshal.FinalReleaseComObject(xlWorkbook); xlApp.Quit(); Marshal.FinalReleaseComObject(xlApp); } } else { MessageBox.Show("Please Select the Valid file to import"); } }
此代码工作正常,并帮助我插入图像到Excel
的SQL
数据库。 不pipe关于excel文件的版本。