Bagaimana Anda membuat file csv untuk setiap lembar excel dari file excel dalam paket ssis?

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

Bagaimana cara menyimpan beberapa lembar Excel sebagai file CSV?

[1] Terus pilih semua sheet. Jika tidak, Anda dapat mencentang kotak di depan Nama lembar kerja untuk memilih semua lembar;

Bagaimana cara membuat file CSV dari beberapa lembar kerja?

Anda tidak dapat memiliki banyak sheet di CSV, karena CSV tidak memiliki sheet. .
Gunakan file yang berbeda untuk setiap sheet, dengan nama yang terkait tetapi berbeda, seperti "Book1_Sheet1", "Book1_Sheet2", dll. .
Lakukan hal di atas, dan juga "zip" file ke dalam satu arsip yang dapat Anda pindahkan

Bagaimana cara mengekspor data dari Excel ke beberapa lembar di SSIS?

Solusi. .
Langkah 1. Buat Paket SSIS baru dan buat Variabel
NamaKolomUntukPengelompokan. Berikan kolom yang ingin Anda gunakan untuk membuat data sheet
ExcelFileName. Berikan nama file excel yang ingin Anda buat
FolderPath. Berikan Path tempat Anda ingin membuat file excel

Bagaimana cara mengonversi file Excel ke CSV menggunakan SSIS?

Solusi. .
Buat file excel jika belum punya. .
Buat dua variabel, satu yang menunjuk ke file Excel Sumber dan satu lagi untuk file csv tujuan seperti yang ditunjukkan di bawah ini. .
Bawa Tugas Script ke Control Flow Pane dan kemudian pilih variabel di atas dalam daftar ReadOnlyVariables

Bài mới nhất

Chủ Đề