把 Epplus 的 example5 翻成 c++.net
其實我本來想用 native c++ call 的
可是 System.IO.FileIO 一直無法初始化?
mscorlib.dll 一直 load 的有錯誤,
所以還是乖乖吃 .net 套餐吧!
// clr_call_epplus.cpp: 主要專案檔。 #include "stdafx.h" using namespace System; using namespace System::IO; using namespace OfficeOpenXml; using namespace OfficeOpenXml::Drawing; using namespace OfficeOpenXml::Drawing::Chart; using namespace System::Drawing; int main(array<System::String ^> ^args) { FileInfo^ templateFile = gcnew FileInfo(L"c:\\temp\\SampleApp\\sample1.xlsx"); FileInfo^ newFile = gcnew FileInfo(L"c:\\temp\\SampleApp\\sample5.xlsx"); if (newFile->Exists) { newFile->Delete(); // ensures we create a new workbook newFile = gcnew FileInfo(L"c:\\temp\\SampleApp\\sample5.xlsx"); } ExcelPackage^ package = gcnew ExcelPackage(newFile, templateFile); { //Open worksheet 1 ExcelWorksheet^ worksheet = package->Workbook->Worksheets[1]; worksheet->InsertRow(5, 2); worksheet->Cells["A5"]->Value = "12010"; worksheet->Cells["B5"]->Value = "Drill"; worksheet->Cells["C5"]->Value = 20; worksheet->Cells["D5"]->Value = 8; worksheet->Cells["A6"]->Value = "12011"; worksheet->Cells["B6"]->Value = "Crowbar"; worksheet->Cells["C6"]->Value = 7; worksheet->Cells["D6"]->Value = 23.48; worksheet->Cells["E2:E6"]->FormulaR1C1 = "RC[-2]*RC[-1]"; ExcelNamedRange^ name = worksheet->Names->Add("SubTotalName", worksheet->Cells["C7:E7"]); name->Style->Font->Italic = true; name->Formula = "SUBTOTAL(9,C2:C6)"; //Format the new rows worksheet->Cells["C5:C6"]->Style->Numberformat->Format = "#,##0"; worksheet->Cells["D5:E6"]->Style->Numberformat->Format = "#,##0.00"; ExcelPieChart^ chart = (ExcelPieChart^)(worksheet->Drawings->AddChart("PieChart", eChartType::Pie3D)); chart->Title->Text = "Total"; //From row 1 colum 5 with five pixels offset chart->SetPosition(0, 0, 5, 5); chart->SetSize(600, 300); ExcelAddress^ valueAddress = gcnew ExcelAddress(2, 5, 6, 5); ExcelChartSerie^ ser = (ExcelPieChartSerie^)(chart->Series->Add(valueAddress->Address, "B2:B6")); chart->DataLabel->ShowCategory = true; chart->DataLabel->ShowPercent = true; chart->Legend->Border->LineStyle = eLineStyle::Solid; chart->Legend->Border->Fill->Style = eFillStyle::SolidFill; chart->Legend->Border->Fill->Color = System::Drawing::Color::Red; //Switch the PageLayoutView back to normal worksheet->View->PageLayoutView = false; // save our new workbook and we are done! package->Save(); } Console::WriteLine(L"Hello World"); return 0; }
全站熱搜