(Sumber: milist DOTNET) Excel dengan OLEDB
-
28 September 2011 5:54Moderator
Rekan-rekan,
Saya membuat program untuk menulis Excel dengan OleDb. Datanya berhasil diinsert tetapi diinsertnya di row ketiga di bawah header.
Apakah mungkin menentukan start insert datanya di row berapa?
Berikut saya lampirkan contoh Excelnya dan methodnya. Thanks.
public void PopulateAirwaybillExcelFile(AirwayBill pObjAirwayBill, string excelPath)
{
using (OleDbConnection odConn = new OleDbConnection())
{
odConn.ConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source={0};", excelPath);
odConn.Open();
using (OleDbTransaction odTrans = odConn.BeginTransaction())
{
using (OleDbCommand odCmd = new OleDbCommand())
{
string sqlInsert = "INSERT INTO [Airwaybill$] (Item,Company,Address,City,PICReceiver1,PICReceiver2,PICReceiver3,PICAirWayBill,TicketNo,DateNow,Requester) VALUES(@Item,@Company,@Address,@City,@PICReceiver1,@PICReceiver2,@PICReceiver3,@PICAirWayBill,@TicketNo,@DateNow,@Requester)";
odCmd.CommandText = sqlInsert;
odCmd.Parameters.Clear();
odCmd.Connection = odConn;
odCmd.Transaction = odTrans;
odCmd.Parameters.Add("@Item", OleDbType.VarChar, 255).Value = pObjAirwayBill.Items;
odCmd.Parameters.Add("@Company", OleDbType.VarChar, 255).Value = pObjAirwayBill.Company;
odCmd.Parameters.Add("@Address", OleDbType.VarChar, 255).Value = pObjAirwayBill.Address;
odCmd.Parameters.Add("@City", OleDbType.VarChar, 255).Value = pObjAirwayBill.City;
odCmd.Parameters.Add("@PICReceiver1", OleDbType.VarChar, 255).Value = pObjAirwayBill.PICReceiver1;
odCmd.Parameters.Add("@PICReceiver2", OleDbType.VarChar, 255).Value = pObjAirwayBill.PICReceiver2;
odCmd.Parameters.Add("@PICReceiver3", OleDbType.VarChar, 255).Value = pObjAirwayBill.PICReceiver3;
odCmd.Parameters.Add("@PICAirWayBill", OleDbType.VarChar, 255).Value = pObjAirwayBill.PICAirwayBill;
odCmd.Parameters.Add("@TicketNo", OleDbType.VarChar, 255).Value = pObjAirwayBill.TicketNo;
odCmd.Parameters.Add("@DateNow", OleDbType.VarChar, 255).Value = DateTime.Now.Date.ToString("dd MMM yyyy");
odCmd.Parameters.Add("@Requester", OleDbType.VarChar, 255).Value = pObjAirwayBill.Requester;
odCmd.ExecuteNonQuery();
}
odTrans.Commit();
}
odConn.Close();
}
}
Agnes Sannie [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Semua Balasan
-
28 September 2011 5:54Moderator
Memang agak sulit untuk mengaturnya. Kalau boleh dengan cara lain, saya sarankan pakai Microsoft.Office.Interop.Excel (Primary Interop Assemblies) saja. Selain bisa diatur posisinya, bisa juga untuk formatting cell-nya, anda juga bisa copy assembly-nya kedalam project reference alias bebas Redistribute.
Ini beberapa link yang bisa membantu,
Download: http://www.microsoft.com/download/en/details.aspx?id=3508
Tutorial: http://support.microsoft.com/kb/302084
Dijawab oleh: Riza Marhaban
Agnes Sannie [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.- Ditandai sebagai Jawaban oleh Agnes SannieMicrosoft Contingent Staff, Moderator 28 September 2011 5:55
-
29 September 2011 2:15Moderator
Ini adalah aplikasi web. Interop itu butuh Excel terinstall di server ya? Di servernya gak ada Excel.
Agnes Sannie [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help. -
29 September 2011 2:17Moderator
Oh maksudnya mau generate file Excel-nya saja. Kalau dulu saya pakai model ini:
http://www.codeproject.com/KB/office/excelxmlspreadsheet.aspx
Cuma harus sedikit di tweak isi XML-nya. Buat template yang sesuai kebutuhan anda saja. Kemudian load data per bagian ke memori dan insert node untuk cell.
XMLExcelTemplate—Header
#INSERTTAG# ß nanti replace ini dengan data anda (bisa anda looping per row juga kalau banyak)
XMLExcelTemplate—
File Office sekarang juga sudah pakai Open XML. Ini link lengkapnya untuk membuat semua bentuk file Office dengan XML.
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124
Cara ini kalau saya lebih mudah, cepat dan full control. Data yang ditarik dari database atau sumber lainnya bisa dimanipulasi dulu sebelum ditulis kedalam file XML-nya. Setelah selesai, save string XML tersebut dengan ekstensi [.xls]. Kalau mau format Office 2007 keatas, tinggal memanfaatkan zip dan XML-nya saja. Karena file Office model baru adalah gabungan dari ZIP dan XML, kemudian rename menjadi [.xlsx].
Udah gitu tidak terkait sama produk Office-nya. Mudah2an bisa membantu.
Dijawab oleh: Riza Marhaban
Agnes Sannie [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.- Ditandai sebagai Jawaban oleh Agnes SannieMicrosoft Contingent Staff, Moderator 29 September 2011 2:17