Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да вмъкна/извлека Excel файлове в колона varbinary(max) в SQL Server 2008?

Ако искате да го направите в чист ADO.NET и вашите Excel файлове не са твърде големи, за да могат да се поберат в паметта наведнъж, можете да използвате тези два метода:

// store Excel sheet (or any file for that matter) into a SQL Server table
public void StoreExcelToDatabase(string excelFileName)
{
    // if file doesn't exist --> terminate (you might want to show a message box or something)
    if (!File.Exists(excelFileName))
    {
       return;
    }

    // get all the bytes of the file into memory
    byte[] excelContents = File.ReadAllBytes(excelFileName);

    // define SQL statement to use
    string insertStmt = "INSERT INTO dbo.YourTable(FileName, BinaryContent) VALUES(@FileName, @BinaryContent)";

    // set up connection and command to do INSERT
    using (SqlConnection connection = new SqlConnection("your-connection-string-here"))
    using (SqlCommand cmdInsert = new SqlCommand(insertStmt, connection))
    {
         cmdInsert.Parameters.Add("@FileName", SqlDbType.VarChar, 500).Value = excelFileName;
         cmdInsert.Parameters.Add("@BinaryContent", SqlDbType.VarBinary, int.MaxValue).Value = excelContents;

         // open connection, execute SQL statement, close connection again
         connection.Open();
         cmdInsert.ExecuteNonQuery();
         connection.Close();
    }
}

За да извлечете обратно листа на Excel и да го съхраните във файл, използвайте този метод:

public void RetrieveExcelFromDatabase(int ID, string excelFileName)
{
    byte[] excelContents;

    string selectStmt = "SELECT BinaryContent FROM dbo.YourTableHere WHERE ID = @ID";

    using (SqlConnection connection = new SqlConnection("your-connection-string-here"))
    using (SqlCommand cmdSelect = new SqlCommand(selectStmt, connection))
    {
        cmdSelect.Parameters.Add("@ID", SqlDbType.Int).Value = ID;

        connection.Open();
        excelContents = (byte[])cmdSelect.ExecuteScalar();
        connection.Close();
    }

    File.WriteAllBytes(excelFileName, excelContents);
 }

Разбира се, можете да адаптирате това към вашите нужди - бихте могли да правите и много други неща - в зависимост от това какво наистина искате да правите (не е много ясно от въпроса ви).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да видите регистрационните файлове на транзакциите в SQL Server 2008

  2. Когато използвате GETDATE() на много места, по-добре ли е да използвате променлива?

  3. Как да получите максимални и минимални стойности от таблица с помощта на агрегатна функция - SQL Server / TSQL урок, част 129

  4. Автоматизирано извличане на номера на версията от .Dtsx файлове

  5. Как да получите първия и последния запис на група в SQL Server 2008?