Excel VBAのRange.FormulaLocalに類似したCell.FormulaLocalをC++で実装する方法
可能な使用シナリオ
Microsoft Excelの関数は、異なる地域や言語で異なるロケール名を持つ場合があります。例えば、SUM関数はドイツ語ではSUMMEと呼ばれます。Aspose.Cellsでは、非英語の関数名は使用できません。Microsoft Excel VBAには、関数の名前をその言語や地域に合わせて返すRange.FormulaLocalプロパティがあります。Aspose.Cellsもこの目的のためにCell.FormulaLocalプロパティを提供しています。ただし、このプロパティはGlobalizationSettings.GetLocalFunctionName(string standardName)メソッドを実装している場合にのみ機能します。
Excel VBAのRange.FormulaLocalと同様にCell.FormulaLocalを実装する
以下のサンプルコードは、GlobalizationSettings.GetLocalFunctionName(string standardName)メソッドの実装方法を説明しています。このメソッドは、標準関数のローカル名を返します。標準関数名が SUM の場合、UserFormulaLocal_SUM を返します。SUM はドイツ語では SUMME 、ロシア語では ТЕКСТ となります。必要に応じてコードを変更し、正しいローカル関数名を返してください。また、下記のサンプルコードのコンソール出力も参照してください。
サンプルコード
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
// Implement GlobalizationSettings class
class GS : public GlobalizationSettings
{
public:
virtual U16String GetLocalFunctionName(const U16String& standardName) override
{
// Change the SUM function name as per your needs.
if (standardName == u"SUM")
{
return u"UserFormulaLocal_SUM";
}
// Change the AVERAGE function name as per your needs.
if (standardName == u"AVERAGE")
{
return u"UserFormulaLocal_AVERAGE";
}
return u"";
}
};
void Implement_Cell_FormulaLocal_SimilarTo_Range_FormulaLocal()
{
// Create workbook
Workbook wb;
// Assign GlobalizationSettings implementation class
wb.GetSettings().SetGlobalizationSettings(new GS());
// Access first worksheet
Worksheet ws = wb.GetWorksheets().Get(0);
// Access some cell
Cell cell = ws.GetCells().Get(u"C4");
// Assign SUM formula and print its FormulaLocal
cell.SetFormula(u"SUM(A1:A2)");
std::cout << "Formula Local: " << cell.GetFormulaLocal().ToUtf8() << std::endl;
// Assign AVERAGE formula and print its FormulaLocal
cell.SetFormula(u"=AVERAGE(B1:B2, B5)");
std::cout << "Formula Local: " << cell.GetFormulaLocal().ToUtf8() << std::endl;
}
int main()
{
Aspose::Cells::Startup();
Implement_Cell_FormulaLocal_SimilarTo_Range_FormulaLocal();
Aspose::Cells::Cleanup();
return 0;
}
コンソール出力
Formula Local: =UserFormulaLocal_SUM(A1:A2)
Formula Local: =UserFormulaLocal_AVERAGE(B1:B2,B5)