Anda bekerja sebagai Pengembang ETL/pengembang SSIS. Anda mendapatkan persyaratan ini di mana Anda mendapatkan satu atau beberapa file Excel di folder Sumber atau Input. Setiap File Dapat memiliki satu Lembar atau Beberapa Lembar. Jika ada beberapa Lembar, mereka memiliki metadata yang sama [Kolom yang Sama]
Anda perlu membuat file csv per file Excel dan memuat semua lembar darinya ke file csv yang baru dibuat.
Berikut adalah contoh file dengan banyak Lembar yang akan saya gunakan untuk posting ini. Spreadsheet pada setiap file Excel memiliki nomor atau kolom yang sama
Cara membuat File CSV untuk setiap File Excel di Paket SSIS dengan menggunakan Script Task
Customer_TechBrothersIT1. xlsx memiliki dua lembar dalam kasus kami dengan kolom Id, name dan dob
Buat file CSV secara dinamis dari File dan Lembar Excel - Tugas Skrip C#
Customer_TechBrothersIT2. xlsx memiliki dua lembar dengan kolom id dan nama
Cara Membuat File CSV Tunggal per Lembar Excel di Paket SSIS dan memuat data - Tugas Skrip C#
Larutan
Kami akan menggunakan Tugas Skrip dengan C# sebagai bahasa skrip dalam Paket SSIS kami untuk membentuk persyaratan ini sebelumnya.
Langkah 1
Buat tiga variabel seperti yang ditunjukkan di bawah ini
SourceFolderPath. Ini adalah folder tempat file Excel Anda seharusnya berada.
DestinationFolderPath. Variabel ini harus menyimpan jalur folder tempat Anda ingin membuat file csv
FileDelimited. Anda dapat memberikan koma[,] atau Pipa[. ] atau karakter lain yang ingin Anda gunakan sebagai pembatas di file csv Anda. Ini akan memberi kita kesempatan untuk mengubah pembatas apa pun tanpa mengubah paket. Saya telah menggunakan koma di posting ini
Cara menggunakan variabel dalam Tugas Skrip untuk Membuat File CSV untuk Lembar Excel Secara Dinamis di SSIS
Langkah 2
Dapatkan Tugas Script dari Toolbox dan seret ke Control Flow Pane. Buka Tugas Skrip dengan klik dua kali lalu petakan variabel seperti yang ditunjukkan.
Anda bekerja sebagai Pengembang ETL/pengembang SSIS. Anda mendapatkan persyaratan ini di mana Anda mendapatkan satu atau beberapa file Excel di folder Sumber atau Input. Setiap File Dapat memiliki satu Lembar atau Beberapa Lembar.
Anda perlu membuat file CSV untuk setiap lembar excel di Folder Tujuan. Nama file csv harus ExcelFileName_SheetName. csv
Berikut adalah contoh file dengan banyak Lembar yang akan saya gunakan untuk posting ini
Cara membuat File CSV untuk setiap Lembar Excel di Paket SSIS dengan menggunakan Script Task
Customer_TechBrothersIT1. xlsx memiliki dua lembar dalam kasus kami dengan kolom Id, name dan dob
Buat file CSV secara dinamis dari File dan Lembar Excel - Tugas Skrip C#
Customer_TechBrothersIT2. xlsx memiliki dua lembar dengan kolom id dan nama
Cara membuat file csv untuk setiap Lembar Excel dari Beberapa File Excel dalam Paket SSIS
Larutan
Kami akan menggunakan Tugas Skrip dengan C# sebagai bahasa skrip dalam Paket SSIS kami untuk membentuk persyaratan ini sebelumnya.
Langkah 1
Buat tiga variabel seperti yang ditunjukkan di bawah ini
SourceFolderPath. Ini adalah folder tempat file Excel Anda seharusnya berada.
DestinationFolderPath. Variabel ini harus menyimpan jalur folder tempat Anda ingin membuat file csv
FileDelimited. Anda dapat memberikan koma[,] atau Pipa[. ] atau karakter lain yang ingin Anda gunakan sebagai pembatas di file csv Anda. Ini akan memberi kita kesempatan untuk mengubah pembatas apa pun tanpa mengubah paket. Saya telah menggunakan koma di posting ini
Cara menggunakan variabel dalam Tugas Skrip untuk Membuat File CSV untuk Lembar Excel Secara Dinamis di SSIS
Langkah 2
Dapatkan Tugas Script dari Toolbox dan seret ke Control Flow Pane. Buka Tugas Skrip dengan klik dua kali lalu petakan variabel seperti yang ditunjukkan.
Cara memetakan variabel di Script Task untuk Membuat file csv dari Excel Sheet secara dinamis di SSIS
Langkah 3
Klik Tombol Edit Skrip di snapshot di atas dan itu akan membuka Editor Tugas Skrip. Di bawah
#region Ruang nama
menambahkan
menggunakan Sistem. saya;
menggunakan Sistem. Data. Oledb;
Kemudian buka public void Main[]
{
dan rekatkan kode di bawah ini
string SourceFolderPath=Dts.Variables["User::SourceFolderPath"].Value.ToString[]; string DestinationFolderPath = Dts.Variables["User::DestinationFolderPath"].Value.ToString[]; string FileDelimited = Dts.Variables["User::FileDelimited"].Value.ToString[]; var directory = new DirectoryInfo[SourceFolderPath]; FileInfo[] files = directory.GetFiles[]; //Declare and initilize variables string fileFullPath = ""; //Get one Book[Excel file at a time] foreach [FileInfo file in files] { string filename = ""; fileFullPath = SourceFolderPath+"\\"+file.Name; filename = file.Name.Replace[".xlsx",""]; MessageBox.Show[fileFullPath]; //Create Excel Connection string ConStr; string HDR; HDR="YES"; ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileFullPath + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\""; OleDbConnection cnn = new OleDbConnection[ConStr]; //Get Sheet Name cnn.Open[]; DataTable dtSheet = cnn.GetOleDbSchemaTable[OleDbSchemaGuid.Tables, null]; string sheetname; sheetname=""; foreach [DataRow drSheet in dtSheet.Rows] { if [drSheet["TABLE_NAME"].ToString[].Contains["$"]] { sheetname=drSheet["TABLE_NAME"].ToString[]; //Display Sheet Name , you can comment it out // MessageBox.Show[sheetname]; //Load the DataTable with Sheet Data OleDbCommand oconn = new OleDbCommand["select * from [" + sheetname + "]", cnn]; //cnn.Open[]; OleDbDataAdapter adp = new OleDbDataAdapter[oconn]; DataTable dt = new DataTable[]; adp.Fill[dt]; //drop $from sheet name sheetname = sheetname.Replace["$", ""]; //Create CSV File and load data to it from Sheet StreamWriter sw = new StreamWriter[DestinationFolderPath+"\\"+filename+"_"+sheetname+".csv", false]; int ColumnCount = dt.Columns.Count; // Write the Header Row to File for [int i = 0; i < ColumnCount; i++] { sw.Write[dt.Columns[i]]; if [i < ColumnCount - 1] { sw.Write[FileDelimited]; } } sw.Write[sw.NewLine]; // Write All Rows to the File foreach [DataRow dr in dt.Rows] { for [int i = 0; i < ColumnCount; i++] { if [!Convert.IsDBNull[dr[i]]] { sw.Write[dr[i].ToString[]]; } if [i < ColumnCount - 1] { sw.Write[FileDelimited]; } } sw.Write[sw.NewLine]; } sw.Close[]; } }
}
Langkah 4
Simpan skrip di Editor Tugas Skrip dan kemudian tutup jendela. Anda semua baik untuk menjalankan Paket SSIS dan itu harus secara dinamis membuat file csv untuk setiap lembar excel pada file excel.
Saya menjalankan Paket dan ini adalah file csv yang dibuat dari 2 file Excel dan empat Lembar pada file excel tersebut