包含其他工作表的 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 测试
我必须使用 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;
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 测试