包含其他工作表的 TdxSpreadSheet xlsx 文件,如何将它们拆分为单独的 xlsx?

TdxSpreadSheet xlsx file that contains other sheets, how to split them in separate xlsx?

我必须使用 FdxSpreadSheet 将 xlsx 文件中的所有不同 sheets 保存到 csv。 我想将 sheets 的当前索引传递给从文件加载,并通过在名称末尾添加索引来保存它们。 它不起作用,它总是用不同的索引名称保存第一个 sheet N 次。 如何加载不同的工作表并将它们保存在不同的文件中?

FdxSpreadSheet := TdxSpreadSheet.Create(nil);
try
  aFileText := ChangeFileExt(CurrentFile,'.csv');
  FdxSpreadSheet.LoadFromFile(CurrentFile);
  for I:=0 to  FdxSpreadSheet.SheetCount -1 do begin
    aFileText := ChangeFileExt(CurrentFile,IntToStr(I)+'.csv');
    FdxSpreadSheet.LoadFromFile(FdxSpreadSheet.Sheets[I]);
    FdxSpreadSheet.SaveToFile(aFileText);
    Result := aFileText;
    LogModule.ScriviLog('File convterd from XlsX to CSV ',Format(':[%s]',[aFileText]),tpLiv4);
  end;
finally
  FreeAndNil(FdxSpreadSheet);
end;
如果加载 xlsx 文件,

LoadFromFile() 会加载所有 sheet。保存为 CSV 会保存当前活动的 sheet,因此循环遍历 sheets。

  for a := 0 to dxSpreadSheet1.SheetCount -1 do
  begin
    dxSpreadSheet1.ActiveSheetIndex := a;
    dxSpreadSheet1.SaveToFile('Sheet_'+intToStr(a+1)+'.csv');
  end;

注意:使用 Delphi 11 和 DeveloperExpress VCL ExpressSpreadSheet 21.2.2 测试