C++ Builder XE4 > Excel 처리 > 첫 번째 시트 선택(시트 이름은 선택 사항) | getCellValue() | setCellValue()
12882 단어 올fileIOExcelcppBuilder
C++ Builder XE4
C++ Builder XE4 > Link > Access to Excel cells in "C++ Builder XE4" | + 입력 파일 정보
계속.
첫 번째 시트 선택
첫 번째 시트를 선택하려면.
void __fastcall TForm1::Button2Click(TObject *Sender)
...
Sheet1 = WorkBook1.PG("ActiveSheet");
WorkBook1.PG("Sheets", 1).PR("Select");
위를 역순으로 실행하면 Sheet1에는 첫 번째 시트가 들어갈 것이다.
코드 v0.3, v0.4
Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <System.Win.ComObj.hpp> // EXCEL処理用
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
/*
v0.4 Jan. 22, 2020
- remove String declaration for setCellValue() as a return value
v0.3 Apr. 13, 2018
- write text to 1st and 2nd sheets
v0.2 Apr. 13, 2018
- add setCellValue()
- add getCellValue()
v0.1 Apr. 13, 2018
imported from
http://mojelder.hatenablog.com/entry/2015/06/29/112326
*/
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
static String getCellValue(Variant asheet, int row, int col)
{
return asheet.OlePropertyGet("Cells").
OlePropertyGet("Item", row, col).OlePropertyGet("Value");
}
static void setCellValue(Variant asheet, int row, int col, WideString val)
{
asheet.OlePropertyGet("Cells").
OlePropertyGet("Item", row, col).OlePropertySet("Value", val);
}
void __fastcall TForm1::B_convertClick(TObject *Sender)
{
static const WideString kXlsFile = "あいうえお.xlsx";
Variant ExcelApp = CreateOleObject("Excel.Application");
try
{
WideString inFilename = ExtractFileDir(ParamStr(0)) + "\\" + kXlsFile; // Openに使う文字列はWideString定義
// not used: WideString inSheetname = L"チェック"; // シート名もWideString (または番号)
Variant xls_books;
Variant xls_abook;
Variant xls_sheets;
Variant xls_asheet;
WideString writeText = "文字"; // 書き込む文字列 // WideString型で定義
try
{
ExcelApp.OlePropertySet("Visible", false); // Excel not shown
xls_books = ExcelApp.OlePropertyGet("Workbooks");
xls_abook = xls_books.OleFunction("Open", inFilename);
xls_sheets = xls_abook.OlePropertyGet("WorkSheets");
//xls_asheet = xls_sheets.OlePropertyGet("Item", inSheetname); // 固定シート名
// 1. 最初のシート
// シート取得
xls_abook.OlePropertyGet("Sheets", 1).OleProcedure("Select");
xls_asheet = xls_abook.OlePropertyGet("ActiveSheet");
// 読込み、書換え
this->Caption = getCellValue(xls_asheet, 5, 3);
setCellValue(xls_asheet, 1, 1, writeText);
// 2. 次のシート
// シート取得
xls_abook.OlePropertyGet("Sheets", 2).OleProcedure("Select");
xls_asheet = xls_abook.OlePropertyGet("ActiveSheet");
// 書換え
setCellValue(xls_asheet, 2, 2, writeText);
xls_abook.OleProcedure("Save"); //開いた*.xlsxを保存
ExcelApp.OleProcedure("Quit"); //Excel終了。
}
__finally
{
xls_asheet = Unassigned(); // 変数を初期状態に
xls_sheets = Unassigned();
xls_abook = Unassigned();
xls_books = Unassigned();
}
}
__finally
{
ExcelApp = Unassigned();
}
}
//---------------------------------------------------------------------------
실행
다음의 엑셀 파일을 준비한다.
처리 실시 후, 이하와 같이 된다.
Reference
이 문제에 관하여(C++ Builder XE4 > Excel 처리 > 첫 번째 시트 선택(시트 이름은 선택 사항) | getCellValue() | setCellValue()), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/ff3a43911d3797da3dd2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)