C ile Var Olan Excel’e Yeni Veri Ekleme
Excel, dünyanın en popüler elektronik tablo uygulamalarından biridir ve büyük miktarlarda veriyi yönetmek ve analiz etmek için yaygın olarak kullanılır. C programlama dili, Excel ile etkileşime geçmek ve verileri otomatikleştirmek için kullanılabilir. Bu makale, C kullanarak var olan bir Excel dosyasına yeni veri eklemeyi açıklayacaktır.
Gereklilikler
- C derleyicisi
- Excel yüklü bir bilgisayar
- Microsoft Office Interop Kütüphanesi
Microsoft Office Interop Kütüphanesini Yükleme
Microsoft Office Interop Kütüphanesi, C programlarının Microsoft Office uygulamalarıyla etkileşime geçmesine olanak tanır. Kütüphaneyi yüklemek için aşağıdaki adımları izleyin:
- Visual Studio’yu açın.
- “Araçlar” menüsüne gidin ve “NuGet Paket Yöneticisi”ni seçin.
- “Çevrimiçi” sekmesine gidin ve “Microsoft.Office.Interop.Excel” paketini arayın.
- Paketi seçin ve “Yükle” düğmesine tıklayın.
C Kodunu Yazma
Aşağıdaki C kodu, var olan bir Excel dosyasına yeni veri ekler:
“`c
include
include
include
include
int main()
{
// Excel uygulamasını başlatın
CoInitialize(NULL);
IDispatch excelApp = NULL;
HRESULT hr = CoCreateInstance(CLSID_Excel, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void *)&excelApp);
if (FAILED(hr))
{
printf(“Excel uygulaması başlatılamadı.\n”);
return 1;
}
// Çalışma kitabını açın
IDispatch *workbook = NULL;
hr = excelApp->lpVtbl->Workbooks->lpVtbl->Open(excelApp, L"C:\\path\\to\\workbook.xlsx", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
if (FAILED(hr))
{
printf("Çalışma kitabı açılamadı.\n");
excelApp->lpVtbl->Quit(excelApp);
CoUninitialize();
return 1;
}
// Çalışma sayfasını alın
IDispatch *worksheet = NULL;
hr = workbook->lpVtbl->Worksheets->lpVtbl->Item(workbook, 1, &worksheet);
if (FAILED(hr))
{
printf("Çalışma sayfası alınamadı.\n");
workbook->lpVtbl->Close(workbook, NULL, NULL);
excelApp->lpVtbl->Quit(excelApp);
CoUninitialize();
return 1;
}
// Yeni veriyi ekleyin
VARIANT var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = SysAllocString(L"Yeni Veri");
hr = worksheet->lpVtbl->Cells->lpVtbl->Item(worksheet, 1, 1, &var);
if (FAILED(hr))
{
printf("Yeni veri eklenemedi.\n");
VariantClear(&var);
worksheet->lpVtbl->Release(worksheet);
workbook->lpVtbl->Close(workbook, NULL, NULL);
excelApp->lpVtbl->Quit(excelApp);
CoUninitialize();
return 1;
}
VariantClear(&var);
// Çalışma kitabını kaydedin
hr = workbook->lpVtbl->Save(workbook, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
if (FAILED(hr))
{
printf("Çalışma kitabı kaydedilemedi.\n");
worksheet->lpVtbl->Release(worksheet);
workbook->lpVtbl->Close(workbook, NULL, NULL);
excelApp->lpVtbl->Quit(excelApp);
CoUninitialize();
return 1;
}
// Çalışma kitabını kapatın
workbook->lpVtbl->Close(workbook, NULL, NULL);
// Excel uygulamasını kapatın
excelApp->lpVtbl->Quit(excelApp);
// COM'u sonlandırın
CoUninitialize();
return 0;
}
“`
Kod Açıklaması
- CoInitialize() ve CoUninitialize() fonksiyonları, COM’u başlatır ve sonlandırır.
- CoCreateInstance() fonksiyonu, Excel uygulamasını başlatır.
- Workbooks->Open() yöntemi, çalışma kitabını açar.
- Worksheets->Item() yöntemi, çalışma sayfasını alır.
- Cells->Item() yöntemi, yeni veriyi hücreye ekler.
- Save() yöntemi, çalışma kitabını kaydeder.
- Close() yöntemi, çalışma kitabını kapatır.
- Quit() yöntemi, Excel uygulamasını kapatır.