Ứng dụng Windows Forms để import dữ liệu từ file Excel (.xlsx, .xls) vào Oracle Database.
Author: khuongnv@live.com
Company: VNPT
Version: 2.1.0
Copyright: © 2025 khuongnv@live.com
- ✅ Import dữ liệu từ Excel vào Oracle Database
- ✅ Hỗ trợ file có header hoặc không có header
- ✅ Tự động tạo bảng trong Oracle với tên cột phù hợp
- ✅ Preview dữ liệu trước khi import
- ✅ True Batch Insert - Sử dụng Oracle Array Binding để insert nhiều dòng cùng lúc
- ✅ Batch Size Configuration - Cấu hình số dòng insert mỗi lần (hiệu suất cao)
- ✅ Progress bar và logging chi tiết
- ✅ Test kết nối Oracle database
- ✅ Log chi tiết quá trình import
- ✅ Xử lý lỗi và validation đầu vào
- ✅ Lưu cấu hình tự động - Connection string và settings được lưu vào JSON
- ✅ File logging - Ghi log ra file text với timestamp
- ✅ Mở thư mục logs - Nút để mở thư mục chứa log files
- Windows 10/11
- .NET 6.0 Runtime
- Oracle Database (local hoặc remote)
- File Excel (.xlsx hoặc .xls)
-
Clone repository
git clone https://github.com/khuongnv/csharp-oracle-import-excel.git cd csharp-oracle-import-excel
-
Mở solution
- Mở Visual Studio 2022
- File → Open → Project/Solution
- Chọn file
ExcelToOracleImporter.sln
-
Restore packages
- Visual Studio sẽ tự động restore packages
- Hoặc nhấn chuột phải vào Solution → Restore NuGet Packages
-
Build và chạy
- Nhấn F5 hoặc Ctrl+F5 để chạy
- Hoặc Build → Build Solution
-
Clone repository
git clone https://github.com/khuongnv/csharp-oracle-import-excel.git cd csharp-oracle-import-excel
-
Restore packages
dotnet restore
-
Build project
dotnet build
-
Chạy ứng dụng
dotnet run
- Nhập Connection String của Oracle Database
- Format:
Data Source=hostname:port/service_name;User Id=username;Password=password;
- Ví dụ:
Data Source=localhost:1521/XE;User Id=hr;Password=password;
- Nhấn "Test Connection" để kiểm tra kết nối
- Nhấn "Select Excel File" để chọn file Excel
- Hỗ trợ format .xlsx và .xls
- Nhấn "Preview Data" để xem trước dữ liệu
- Table Name: Tên bảng sẽ được tạo trong Oracle (mặc định: EXCEL_IMPORT)
- Has Header: Check nếu dòng đầu tiên là tên cột
- Batch Size: Số dòng insert mỗi lần (mặc định: 100)
- File nhỏ (< 1K dòng): 50-100 → Progress mịn
- File trung bình (1K-10K dòng): 100-500 → Cân bằng hiệu suất
- File lớn (> 10K dòng): 500-1000 → Hiệu suất tối ưu
- File rất lớn (> 100K dòng): 1000-2000 → Throughput cao nhất
- Nhấn "Import Data" để bắt đầu import
- Theo dõi progress bar và log
- Ứng dụng sẽ tự động:
- Tạo bảng mới (xóa bảng cũ nếu tồn tại)
- Import tất cả dữ liệu từ Excel
- Hiển thị kết quả
- Nếu có header: Sử dụng tên cột từ Excel (được làm sạch để phù hợp Oracle)
- Nếu không có header: Tạo tên cột tự động (A, B, C, ..., AA, AB, ...)
- Tất cả cột được tạo dưới dạng
VARCHAR2(4000)
- Dữ liệu được chuyển đổi thành string
ORA-12154: TNS:could not resolve the connect identifier
Giải pháp: Kiểm tra Connection String và tên service
ORA-00942: table or view does not exist
Giải pháp: Đảm bảo user có quyền CREATE TABLE
File Excel không có dữ liệu!
Giải pháp: Kiểm tra file Excel có dữ liệu và đúng format
Giải pháp: Ứng dụng tự động làm sạch tên cột, loại bỏ ký tự đặc biệt
Oracle.ManagedDataAccess.Core
(23.6.0) - Kết nối OracleEPPlus
(7.0.5) - Đọc file ExcelSystem.Data.OleDb
(7.0.0) - Hỗ trợ Excel cũNewtonsoft.Json
(13.0.3) - Xử lý JSON cho cấu hình
ExcelToOracleImporter/
├── ExcelToOracleImporter.sln # Visual Studio Solution file
├── ExcelToOracleImporter.csproj # Project file
├── MainForm.cs # Giao diện chính
├── Program.cs # Entry point
├── AppConfig.cs # Quản lý cấu hình JSON
├── FileLogger.cs # Ghi log ra file
├── .gitignore # Git ignore file
├── config.json # File cấu hình (tự tạo)
├── logs/ # Thư mục chứa log files
└── README.md # Hướng dẫn này
- Connection string, table name, batch size, header settings được lưu vào
config.json
- Tự động load cấu hình khi khởi động ứng dụng
- Không cần nhập lại thông tin mỗi lần sử dụng
- Ghi log chi tiết ra file text trong thư mục
logs/
- Format log:
import_log_YYYYMMDD.txt
- Log bao gồm: INFO, SUCCESS, ERROR với timestamp
- Nút "Open Logs Folder" để mở thư mục logs
{
"ConnectionString": "Data Source=localhost:1521/XE;User Id=hr;Password=password;",
"TableName": "EXCEL_IMPORT",
"HasHeader": true,
"BatchSize": 100,
"LastExcelFilePath": "C:\\path\\to\\file.xlsx"
}
dotnet build -c Release
dotnet publish -c Release -r win-x64 --self-contained
MIT License
Nếu gặp vấn đề, vui lòng tạo issue hoặc liên hệ developer.