数据另存为CSV档案(也是一种excel档案)【2】------自主选择路径
2021/5/8 10:25:23
本文主要是介绍数据另存为CSV档案(也是一种excel档案)【2】------自主选择路径,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
实现自主选择路径,将数据另存为CSV档案的功能。代码如下:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShlObj,ComCtrls,ShellAPI,IniFiles, ActiveX, wwdbdatetimepicker; type TForm1 = class(TForm) Button1: TButton; wwDBDateTimePicker1: TwwDBDateTimePicker; SaveDialog1: TSaveDialog; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function GetSystemPath(Folder: Integer): string; var PIDL: PItemIDList;//PItemIDList在ShlObj單元。 Path: LPSTR;//LPSTR在Windows單元。 AMalloc: IMalloc;//IMalloc在ActiveX單元。 begin Path :=StrAlloc(MAX_PATH); SHGetSpecialFolderLocation(Application.Handle, Folder, PIDL); if SHGetPathFromIDList(PIDL, Path) then Result :=Path; SHGetMalloc(AMalloc); AMalloc.Free(PIDL); StrDispose(Path); end; procedure TForm1.Button1Click(Sender: TObject); var mysave:TSaveDialog; FileName,MYSTR:string; LIST1:TStringList; I:Integer; begin FileName:='我的文檔啦'; mysave:=TSaveDialog.Create(Self);//self這裡是指form1 mysave.InitialDir:=GetSystemPath(CSIDL_PERSONAL);//CSIDL_PERSONAL在ShlObj單元里,是一個16進制的數:$0005。 mysave.InitialDir:=GetCurrentDir; //直接用delphi自帶的函數GetCurrentDir(在SysUtils單元里)也能取得文件路徑。 mysave.Title:='請選擇要保存的位置啦'; mysave.FileName:=FileName; {如何在保存時于文檔名后面加上後綴名‘.csv’? 答:是mysave.DefaultExt、 mysave.Filter、 mysave.FilterIndex 共同決定的。下面的代碼分別解釋了它們所起的作用:} mysave.DefaultExt:='CSV';//選‘存檔類型’時這句代碼使文檔名後面有後綴且隨著所選的類型而變化相應的後綴。 mysave.Filter:='xlsx檔案|*.xlsx|xls檔案|*.xls|csv檔案|*.csv|所有檔案|*.*';//這裡羅列了4種類型。(Filter屬性有Filter Name和Filter兩個值,相當於展示值和存儲值。) mysave.FilterIndex:=3;//存檔類型(過濾) 的下標,從1開始,1表示第一條,默認為第一條。這裡為3表示後綴名默認為‘.csv’。 mysave.Options:=mysave.Options+[ofOverwritePrompt];//相同文件名时弹出是否覆盖的对话框 //FileName:=mysave.GetNamePath;//FileName是空的,這樣不能獲取路徑。。。 if mysave.Execute then begin FileName:=mysave.FileName;//獲取文件保存的路徑!! mysave.Free; end else mysave.Free; LIST1:=TStringList.Create; MYSTR:='HAHA,TOTO,DUDU,LINGLING,PYNPYN,KIMO,GIGI,QIQI'; LIST1.Append(MYSTR); for I:=0 TO 10 do BEGIN LIST1.Append('MY'+FormatFloat('00',I)); end; LIST1.SaveToFile(FileName);{根據文件路徑找到剛剛創建并保存的文件,將列表LIST1的每行內容 按行保存到該文件中(CSV文件會把行中按逗號分隔的內容分割并保存到不同的列單元格!而 xlsx、xls文件不會識別逗號分割,只會全部保存到一個單元格里)。 } //下面調用API函數ShellExecute打開程式文檔 //ShellExecute(Handle,'',PChar(FileName),'','',SW_SHOWNORMAL);//用空字符串的話,後面自主打開excel時會報錯!! ShellExecute(Handle,nil,PChar(FileName),nil,nil,SW_SHOWNORMAL);//是PChar類型,所以要用nil。 //ShellExecute(Handle,null,PChar(FileName),null,null,SW_SHOWNORMAL);//報錯:Incompatible types: 'Variant' and 'PAnsiChar' end;
结果如图:
这篇关于数据另存为CSV档案(也是一种excel档案)【2】------自主选择路径的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享