# ExtractXlsxRow **Repository Path**: lf_-dev/extract-xlsx-row ## Basic Information - **Project Name**: ExtractXlsxRow - **Description**: 提取单xlsx格式文件中的一些行,每行与表头输出xlsx格式的新文件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-22 - **Last Updated**: 2023-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: xls, Codec, encoding ## README # ExtractXlsxRow 该软件用于提取xlsx格式的若干行,组成若干新文件存储,新文件名以第一列数据命名。 该软件基于openxlsx开发。 # Encoding 1. openXlsx 只支持UTF-8编码(包括文件名和文件内容,都会被解析为UTF-8编码) 例如: * xlxs内容 * 数据:姓名 * 读入:E5A793 E5908D [utf8编码] 2. GetOpenFileName 返回的 lpstrFile 为 GB2312 编码 3. 常量字符的编码 常量字符的编码受3个方面的影响: * 文件编码 * 编译选项 * 字符串前缀 三者关系如下: |文件编码|编译器选项|前缀|结果 |-|-|-|-| |UTF-8|/utf-8|u8|UTF-8| |UTF-8|/utf-8||UTF-8| |UTF-8||u8|无效| |UTF-8|||UTF-8| |UTF-8-BOM|/utf-8|u8|UTF-8| |UTF-8-BOM|/utf-8||UTF-8| |UTF-8-BOM||u8|UTF-8| |UTF-8-BOM|||GB2312| |GB2312|/utf-8|u8|GB2312| |GB2312|/utf-8||GB2312| |GB2312||u8|GB2312| |GB2312|||GB2312| ```c++ char* a = "示例" // 1. main.cpp : utf8-bom 编码 // 读入:CABE C0FD [ gb231编码] // 2. main.cpp: utf8 编码 // 读入:e7 a4 ba e4 be 8b [utf8编码] ``` * 设置编译选项:add_cxxflags("/utf-8"),可以影响到字符串的编码 * 字符串前 加 u8 前缀(如 u8"一"):使字符串按照utf-8 编码,同理 u:utf-16; U: utf-32 * u8前缀在cxx17及之前,将字符串转化为 const char[] 类型 * u8前缀在cxx17之后,将字符串转化为 const char8_t[] 类型 4. CMD 窗口: 可以通过chcp命令,修改当前cmd环境的 code page,从而显示不同的编码字符串,默认可正常输出 GB2312 编码 (chcp 936) * cp 65001: UTF-8 * cp 936: 简体中文 :可正常输出GB2312 编码 * cp 950:繁体中文 更多cp,详见 "附录1:code page idenitfiers" 5. 字体TTF: 字体中记录的是字符的 unicode编码(UTF-16) ```c++ // unicode 开始,结束 0x0020, 0x00FF, // Basic Latin + Latin Supplement(基本拉丁文和拉丁文补充) 0x2000, 0x206F, // General Punctuation( 通用标点符号) 0x3000, 0x30FF, // CJK Symbols and Punctuations, Hiragana, Katakana(中日韩 符号,标点,平假名,片假名) 0x31F0, 0x31FF, // Katakana Phonetic Extensions(片假名音译扩展) 0xFF00, 0xFFEF, // Half-width characters(半宽字符) 0x4e00, 0x9FAF, // CJK Ideograms(中日韩表意文字) ``` 6. IMGUI imgui 使用unicode编码,支持 utf-8(猜想是openGL 将utf-8转换为utf-16),不支持gb2312 ___lc_codepage_func() : C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\locale.h * 原型:_ACRTIMP unsigned int __cdecl ___lc_codepage_func (void); * 返回值: C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinNls.h ```cpp #define CP_ACP 0 // default to ANSI code page #define CP_OEMCP 1 // default to OEM code page #define CP_MACCP 2 // default to MAC code page #define CP_THREAD_ACP 3 // current thread's ANSI code page #define CP_SYMBOL 42 // SYMBOL translations #define CP_UTF7 65000 // UTF-7 translation #define CP_UTF8 65001 // UTF-8 translation ``` AreFileApisANSI: # GetOpenFileName * 原型:BOOL GetOpenFileName(LPOPENFILENAME ); * 功能:显示打开文件对话框,返回所选文件的完整文件名(“\\\\":文件分割符;gb2312编码) * 引用库:comdlg32.lib * 头文件:commdlg.h * 参数说明 * OPNEFILENAME | 名称 | 说明 | | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | lStructSize | 本结构体的长度,单位:字节 | | hwndOwner | 本对话框父窗口
可以是任意有效窗口句柄;没有父窗口是为NULL | | hInstance | 1. 如果flag设置为OPN_ENABLETEMPLATEHANDLE,hInstance是一个包含对话框模板的内存对象的句柄
2. 如果flag设置为OPN_ENABLETEMPLATE,hInstance是一个包含对话框模板的模块的句柄,模板名为 lpTemplateName成员指定
3. 如果flag没有设置为以上任意两个标志,hInstance成员被忽略
4. 如果flag设置为OFN_EXPLORER,系统将使用指定模板创建一个对话框(Explorer风格)
5. 如果flag没有被设置为OFN_EXPLORER, 系统将使用模板创建一个就风格的对话框 | | lpstrFilter | 1. “以null结尾的筛选器对”组成的字符串,字符串最后必须以“\0\0"结尾。
2. 格式:"显示字符串\0筛选器模板字符串\0", 例如: "TEXT Files\0*.TXT\0\0"
3. 一个显示字符串可以同时对应多个筛选器模板字符串,各模板用";"分割,例如:"Text Files\0*.TXT;*.DOC;*.BAK\0\0"
4. 筛选器模板字符串不能包含空格
5. 如果为NULL, 对话框不显示任何筛选器 | | lpstrCustomFilter | 1.一个指向静态缓冲区的指针,buffer包含一对以null结尾的筛选器字符串,用于保留用户选择的筛选器模式字符串。
2.筛选器字符串对的第一个字符串是显示字符串,用于描述自定义筛选器;第二个字符串是用户选择的筛选器模式
3.应用杆程序第一次创建本对话框时,用户指定第一个字符串,可以为任意非空字符串。当用户选择一个文件,对话框赋值了当前的筛选器模式到第二个字符串,保存的筛选器模式可以是lpstrFilter中的任意一个,也可以是用户输入的筛选模式。
4. 下一次对话框被创建时,系统使用上一次的字符串初始化用户自定义的筛选器。
5.如果 nFilterIndex 设置为0, 对话框将使用自定义的筛选器。
6. 当设置为NULL 时,对话框不保存用户自定义的筛选模式;当设为NULL是,nMaxCustFilter成员必须被指定,单位是TCHAR. | | nMaxCustFilter | 指定lpstrCustomFilter buffer的大小,单位是TCHAR;
buffer 至少40个字符长;如果lpstrCustomFilter是NULL,此成员被忽略 | | nFilterIndex | 1. 指定文件类型控件所选择的筛选器索引;
2. lpstrFilter如果包含若干对筛选器,第一对的索引为1,第二对的索引为2,以此类推;
3. 0 指示 lpstrCustomFilter指定的自定义筛选器;
4. 用户可以通过设置index指定筛选器对;
5. 如果用户选择了文件,index返回当前显示的筛选器;
6. 如果index为0,lpstrCustomFilter为NULL, 系统使用lpstrFilter中的第一个筛选器。
7. 如果 index为0, lpstrCustomFilter, lpstrFilter 都为NULL, 系统将不会使用任何筛选器,并且在对话框的文件列表控件中不会显示任何文件。 | | lpstrFile | 1. 指向“文件名”编辑控件的初始字符buffer的指针
2. 第一个字符必须为NULL,如果没有必要初始化;
3. 当 GetOpenFileName 或者 GetSaveFileName 返回成功时,这个buffer包含所选文件的驱动器,路径,文件名和扩展名;
4. 如果 flag设置为 ALLOWMULTISELECT, 用户可以选择多个文件,buffer中包含当前目录,加上所选文件的文件名。
4.1对于Explorer风格的对话框,目录和文件名字符串是用 NULL分隔,在最后一个文件名末尾会有一个额外的NULL(形如 "dir\0file1\0file2\0\0"), 文件名为长文件名,带空格;
4.2 对于旧风格的对话框,字符串用空格分隔,文件名使用短文件名,可以使用 FindFirstFile 函数转换长、短文件名。
4.3 如果用户只选择一个文件, lpstrFile在路径和文件名中间没有分隔
5. 如果buffer分配过小,函数将返回FALSE,调用CommDlgExtendedError 函数将返回 FNERR_BUFFERTOOSMALL. 这种情况下,lpstrFile的前两个字节包含了需求的buffer大小,单位:字节或字符 | | nMaxFile | 1. 指定lpstrFile buffer的大小,单位:TCHAR. buffer必须足够大,保证可以存放路径和文件名字符串,
2. 如果buffer分配过小, GetOpenFileName() & GetSaveFileName()将会返回false。
3.buffer的大小至少为256字符长 | | lpstrFileTitle
[out] | 指向 接收选定文件和扩展名的 buffer指针,可以为空 | | nMaxFileTitle | lpstrFileTitle buffer的大小,单位 TCHAR, 当lpstrFileTitle为空时,此参数忽略 | | lpstrInitialDir | 指向初始路径的字符串。选择初始路径的算法如下:
1. 如果lpstrFile包含路径,此路径为初始路径
2. 否则, lpstrInitialDir指定初始路径;
3. 否则,此应用程序如果之前使用了“打开”或“保存”对话框,则以最近一次使用的目录的初始目录。如果长时间没有运行此程序,保存的最近使用目录将会被丢弃;
4. 如果lpstrinitialDir为NULL,并且当前路径包含筛选器指定类型的文件,则初始路径为当前目录
5. 否则,当前路径为当前用户的个人目录
6.否则, 初始目录是桌面文件夹 | | lpstrTitle | 对话框标题栏字符串。如果当前成员为NULL,则系统使用默认标题(“打开”或"保存") | | Flags | 一组用于初始化对话框的位标志。当对话框返回时,它设置为这些标志来指示用户输入。可以使用以下标志组合:
1. OFN_ALLOWMULTISELECT: 在"文件名“列表中可以多选文件。nFileOffset参数表示相对于第一个文件名的偏移,单位:字节或字符数。nFileExtension未使用。如果为旧风格对话框使用了自定义模板,定义文件名表框时,必须包含LBS_EXTENDEDSEL;
2. OFN_CREATEPROMPT: 如果用户指定的文件不存在,此标志提示用户创建文件。如果用户选择创建此文件,此对话框关闭,程序返回指定的名字,否则次对话框保持打开,如果使用了OFN_ALLOWMULTISELECT标志,此对话框允许用户指定一个不存在的文件。
3. OFN_DONTADDTORECENT: 防止系统将用户选择文件加入的用户最近使用文档列表。检索此目录的位置,调用SHGetSpecialFolderLocation函数,并设置CSIDL_RECENT标志。
4. OFN_ENALBEHOOK:允许使用 lpfnHOOK参数指定的钩子函数。
5. OFN_ENABLEINCLUDENOTIFY: 用户打开文件夹时,对话框发送 CDN_INCLUDEITEM通知消息给 OFNHookProc 钩子处理函数。对话框为新打开的文件夹中每一项内容发布一条通知。这些通知消息允许你控制哪些项目显示在文件夹项目列表
6. OFN_ENABLESIZING: 允许使用鼠标和键盘改变explorer风格的对话框的大小。缺省情况下,explorer风格的“打开”和“保存”对话框允许对话框被改变大小,不论此标志是否被设置。此标志在用户提供了钩子处理进程或自定义模板时才是必要的。 旧风格的对话框不允许改变大小。
7. OFN_ENABLETEMPLATE:表示 lpTemplateName指向一个对话框资源的名字,对话框资源包含在 hInstance指定的模块。如果OFN_EXPLORER被设置,系统将创建一个explorer风格的对话框。如果OFN_EXPLORER未设置,系统将创建一个旧风格的对话框。
8.OFN_ENABLETEMPLATEHANDLE: 表示hInstance标志一个包含对话框模板的数据块。如果设置此标志,系统忽略lpTemplateName参数。
9. OFN_EXPLORER: 表示任何定制“打开”“保存”对话框使用 explorer风格定制方式。更多信息查看 Explorer-STYLE hook procedures 和 Explorer-Style Custom Templates. 默认情况下,对话框使用explorer风格的用户接口不论此标志是否被设置,此标志仅仅在用户提供了自定义模板或钩子函数或设置了OFN_ALLOWMULTISELECT标志。如果想要使用旧风格的用户接口,不要设置OFN_EXPLORER并且使用旧风格模板或钩子函数。如果你使用了旧风格,但是不需要一个定义模板或者钩子函数,那就提供一个简单返回FALSE的钩子函数。
10.OFN_EXTENSIONDIFFRENT:用户键入的文件扩展名不同于 **lpstrDefExt** 指定的扩展名。 如果 **lpstrDefExt** 为 **NULL** ,则函数不使用此标志。
11.OFN_FILEMUSTEXIST: 用户只能在“文件名”条目字段中键入现有文件 **的名称** 。 如果指定了此标志,并且用户输入了无效的名称,则对话框过程会在消息框中显示警告。 如果指定了此标志,则还会使用 **OFN_PATHMUSTEXIST** 标志。 此标志可以在 **“打开** ”对话框中使用。 它不能与 **“另存为** ”对话框一起使用。
12.**OFN_FORCESHOWHIDDEN: 强制显示系统和隐藏文件,从而替代用户设置以显示或不显示隐藏的文件。 但是,不会显示同时标记为 system 和 hidden 的文件**
13.**OFN_HIDEREADONLY: 隐藏“**只读**检查框**
14.**OFN_LONGNAMES:对于旧式对话框,此标志会导致对话框使用长文件名。 如果未指定此标志,或者如果还设置了 **OFN_ALLOWMULTISELECT** 标志,则旧式对话框使用 (8.3 格式的短文件名) 带空格的文件名。 资源管理器样式对话框将忽略此标志,并始终显示长文件名。**
15.**OFN_NOCHANGEDIR** :如果用户在搜索文件时更改了目录,则将当前目录还原为其原始值。此标志对 [GetOpenFileName](https://learn.microsoft.com/zh-cn/windows/desktop/api/commdlg/nf-commdlg-getopenfilenamea) 无效。
16.**OFN_NODEREFERENCELINKS:指示对话框返回所选快捷方式的路径和文件名 (。LNK) 文件。 如果未指定此值,对话框将返回快捷方式引用的文件的路径和文件名。**
17.**OFN_NOLONGNAMES: 对于旧样式的对话框,此标志会导致对话框使用 (8.3 格式的短文件名) 。 资源管理器样式对话框将忽略此标志,并始终显示长文件名。**
18.**OFN_NONETWORKBUTTON**: 隐藏和禁用“ **网络** ”按钮。
19.**OFN_NOREADONLYRETURN: 返回的文件未选中“**只读**检查框,并且不在受写保护的目录中。**
20.**OFN_NOTESTFILECREATE 在关闭对话框之前,不会创建文件。 如果应用程序将文件保存在 create-nonmodify 网络共享上,则应指定此标志。 当应用程序指定此标志时,库不会检查写入保护、完整磁盘、打开的驱动器门或网络保护。 使用此标志的应用程序必须小心执行文件操作,因为文件在关闭后无法重新打开**
21.**OFN_NOVALIDATE** :通用对话框允许返回的文件名中包含无效字符。 通常,调用应用程序使用挂钩过程,该过程使用 [FILEOKSTRING](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/fileokstring) 消息检查文件名。 如果编辑控件中的文本框为空或只包含空格,则会更新文件和目录的列表。 如果编辑控件中的文本框包含任何其他内容, **则 nFileOffset** 和 **nFileExtension** 将设置为通过分析文本生成的值。 不会向文本添加默认扩展名,也不会将文本复制到 **lpstrFileTitle** 指定的缓冲区。 如果 **nFileOffset** 指定的值小于零,则文件名无效。 否则,文件名有效,可以使用 **nFileExtension** 和 **nFileOffset** ,就像未指定 **OFN_NOVALIDATE** 标志一样。
22.**OFN_OVERWRITEPROMPT:如果所选文件已存在,则会导致“ **另存为** ”对话框生成消息框。 用户必须确认是否覆盖文件。**
23.**OFN_PATHMUSTEXIST**:用户只能键入有效路径和文件名。 如果使用此标志,并且用户在“ **文件名** ”条目字段中键入了无效的路径和文件名,则对话框函数会在消息框中显示警告。
24.**OFN_READONLY:在创建对话框时,首先选择“**只读**检查框。 此标志指示关闭对话框时**“只读**检查框的状态。**
25.**OFN_SHAREAWARE**:指定如果由于网络共享冲突导致 [对 OpenFile](https://learn.microsoft.com/zh-cn/windows/desktop/api/winbase/nf-winbase-openfile) 函数的调用失败,则忽略该错误,并且对话框将返回所选文件名。 如果未设置此标志,则当用户指定的文件名发生网络共享冲突时,对话框会通知挂钩过程。 如果设置 **OFN_EXPLORER** 标志,对话框会将 [CDN_SHAREVIOLATION](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/cdn-shareviolation) 消息发送到挂钩过程。 如果未设置 **OFN_EXPLORER** ,对话框会将 [SHAREVISTRING](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/sharevistring) 注册的消息发送到挂钩过程。
26.**OFN_SHOWHELP:使对话框显示“ **帮助** ”按钮。 **hwndOwner** 成员必须指定用于接收用户单击“帮助**”按钮**时对话框发送的 [HELPMSGSTRING](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/helpmsgstring) 注册消息的窗口。 当用户单击“ **帮助** ”按钮时,资源管理器样式对话框会向挂钩过程发送[CDN_HELP](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/cdn-help)通知消息。** | | nFileOffset
[out] | 1. 从路径开头到**lpstrFile** 指向的字符串中文件名的从零开始的偏移量(以字符为单位)。
2. 对于 ANSI 版本,这是字节数;对于 Unicode 版本,这是字符数。
3. 例如,如果 **lpstrFile** 指向以下字符串“c:\dir1\dir2\file.ext”,则此成员包含值 13 以指示“file.ext”字符串的偏移量。
4. 如果用户选择多个文件, **则 nFileOffset** 是第一个文件名的偏移量。 | | nFileExtension
[out] | 1. 从路径开头到**lpstrFile** 指向的字符串中文件扩展名的从零开始的偏移量(以字符为单位)。
2. 对于 ANSI 版本,这是字节数;对于 Unicode 版本,这是字符数。
3. 通常,文件扩展名是最后一个点 (".")之后的子字符串。
4. 例如,txt 是文件名readme.txt的扩展名,html 是 readme.txt.html 的扩展名。
5. 因此,如果 **lpstrFile** 指向字符串“c:\dir1\dir2\readme.txt”,则此成员包含值 20。
6. 如果 **lpstrFile** 指向字符串“c:\dir1\dir2\readme.txt.html”,则此成员包含值 24。
7. 如果 **lpstrFile** 指向字符串“c:\dir1\dir2\readme.txt.html.”,则此成员包含值 29。
8. 如果 **lpstrFile** 指向不包含任何“.”字符(如“c:\dir1\dir2\readme”)的字符串,则此成员包含零。 | | lpstrDefExt | 默认扩展。 如果用户无法键入扩展名,[GetOpenFileName](https://learn.microsoft.com/zh-cn/windows/desktop/api/commdlg/nf-commdlg-getopenfilenamea) 和 [GetSaveFileName](https://learn.microsoft.com/zh-cn/windows/desktop/api/commdlg/nf-commdlg-getsavefilenamea) 会将此扩展名追加到文件名。 此字符串可以是任意长度,但只追加前三个字符。 字符串不应包含句点 (.) 。 如果此成员为 **NULL** ,并且用户无法键入扩展,则不会追加任何扩展。 | | lCustData | 系统传递给**由 lpfnHook** 成员标识的挂钩过程的应用程序定义数据。 当系统将 [WM_INITDIALOG](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/wm-initdialog) 消息发送到挂钩过程时,消息的 *lParam* 参数是指向创建对话框时指定的 **OPENFILENAME** 结构的指针。 挂钩过程可以使用此指针获取 **lCustData** 值。 | | lpfnHook | 1. 指向挂钩过程的指针。 除非**Flags** 成员包含 **OFN_ENABLEHOOK** 标志,否则将忽略此成员。
2.如果未在 **Flags** 成员中设置**OFN_EXPLORER**标志,**则 lpfnHook** 是指向接收用于对话框的消息[的 OFNHookProcOldStyle](https://learn.microsoft.com/zh-cn/previous-versions/windows/desktop/legacy/ms646932(v=vs.85)) 挂钩过程的指针。挂钩过程返回 **FALSE** 以将消息传递到默认对话框过程,或 **返回 TRUE** 以丢弃消息。
3.如果设置了 **OFN_EXPLORER** , **则 lpfnHook** 是指向 [OFNHookProc](https://learn.microsoft.com/zh-cn/windows/desktop/api/commdlg/nc-commdlg-lpofnhookproc) 挂钩过程的指针。 挂钩过程接收从对话框发送的通知消息。 挂钩过程还会接收通过指定子对话模板定义的任何其他控件的消息。 挂钩过程不会接收用于默认对话框的标准控件的消息。 | | lpTemplateName | 模块中由**hInstance** 成员标识的对话模板资源的名称。 对于编号对话框资源,它可以是 [MAKEINTRESOURCE](https://learn.microsoft.com/zh-cn/windows/desktop/api/winuser/nf-winuser-makeintresourcea) 宏返回的值。 除非在 **Flags** 成员中设置了**OFN_ENABLETEMPLATE**标志,否则将忽略此成员。 如果设置了 **OFN_EXPLORER** 标志,则系统会使用指定的模板创建一个对话框,该对话框是默认资源管理器样式对话框的子级。 如果未设置 **OFN_EXPLORER** 标志,系统将使用该模板创建替换默认对话框的旧样式对话框。 | | pvReserved | 此成员是保留的。 | | dwReserved | 此成员是保留的。 | | FlagsEx | 可用于初始化对话框的一组位标志。 目前,此成员可以为零或以下标志。
**OFN_EX_NOPLACESBAR**:如果设置了此标志,则不显示位置栏。 如果未设置此标志,资源管理器样式的对话框将包含包含常用文件夹(如收藏夹和桌面)图标的位置栏 | | | | | - | - | ![pic](openfileDlg.png) # 附录1:code page identifiers NOTE: ANSI code pages can be different on different computers, or can be changed for a single computer, leading to data corruption. For the most consistent results, applications should use Unicode, such as UTF-8 (code page 65001) or UTF-16, instead of a specific code page. | Identifier | .NET Name | Additional information | | :---------------------- | :---------------------- | :-------------------------------------------------------------------------- | | 037 | IBM037 | IBM EBCDIC US-Canada | | 437 | IBM437 | OEM United States | | 500 | IBM500 | IBM EBCDIC International | | 708 | ASMO-708 | Arabic (ASMO 708) | | 709 | | Arabic (ASMO-449+, BCON V4) | | 710 | | Arabic - Transparent Arabic | | 720 | DOS-720 | Arabic (Transparent ASMO); Arabic (DOS) | | 737 | ibm737 | OEM Greek (formerly 437G); Greek (DOS) | | 775 | ibm775 | OEM Baltic; Baltic (DOS) | | 850 | ibm850 | OEM Multilingual Latin 1; Western European (DOS) | | 852 | ibm852 | OEM Latin 2; Central European (DOS) | | 855 | IBM855 | OEM Cyrillic (primarily Russian) | | 857 | ibm857 | OEM Turkish; Turkish (DOS) | | 858 | IBM00858 | OEM Multilingual Latin 1 + Euro symbol | | 860 | IBM860 | OEM Portuguese; Portuguese (DOS) | | 861 | ibm861 | OEM Icelandic; Icelandic (DOS) | | 862 | DOS-862 | OEM Hebrew; Hebrew (DOS) | | 863 | IBM863 | OEM French Canadian; French Canadian (DOS) | | 864 | IBM864 | OEM Arabic; Arabic (864) | | 865 | IBM865 | OEM Nordic; Nordic (DOS) | | 866 | cp866 | OEM Russian; Cyrillic (DOS) | | 869 | ibm869 | OEM Modern Greek; Greek, Modern (DOS) | | 870 | IBM870 | IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin | | 2 | | | | 874 | windows-874 | ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) | | 875 | cp875 | IBM EBCDIC Greek Modern | | 932 | shift_jis | ANSI/OEM Japanese; Japanese (Shift-JIS) | | 936 | gb2312 | ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified | | (GB2312) | | | | 949 | ks_c_5601-1987 | ANSI/OEM Korean (Unified Hangul Code) | | 950 | big5 | ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese | | Traditional (Big5) | | | | 1026 | IBM1026 | IBM EBCDIC Turkish (Latin 5) | | 1047 | IBM01047 | IBM EBCDIC Latin 1/Open System | | 1140 | IBM01140 | IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) | | 1141 | IBM01141 | IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC | | (Germany-Euro) | | | | 1142 | IBM01142 | IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC | | (Denmark-Norway-Euro) | | | | 1143 | IBM01143 | IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC | | (Finland-Sweden-Euro) | | | | 1144 | IBM01144 | IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) | | 1145 | IBM01145 | IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC | | (Spain-Euro) | | | | 1146 | IBM01146 | IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC | | (UK-Euro) | | | | 1147 | IBM01147 | IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) | | 1148 | IBM01148 | IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC | | (International-Euro) | | | | 1149 | IBM01149 | IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC | | (Icelandic-Euro) | | | | 1200 | utf-16 | Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only | | to managed applications | | | | 1201 | unicodeFFFE | Unicode UTF-16, big endian byte order; available only to managed | | applications | | | | 1250 | windows-1250 | ANSI Central European; Central European (Windows) | | 1251 | windows-1251 | ANSI Cyrillic; Cyrillic (Windows) | | 1252 | windows-1252 | ANSI Latin 1; Western European (Windows) | | 1253 | windows-1253 | ANSI Greek; Greek (Windows) | | 1254 | windows-1254 | ANSI Turkish; Turkish (Windows) | | 1255 | windows-1255 | ANSI Hebrew; Hebrew (Windows) | | 1256 | windows-1256 | ANSI Arabic; Arabic (Windows) | | 1257 | windows-1257 | ANSI Baltic; Baltic (Windows) | | 1258 | windows-1258 | ANSI/OEM Vietnamese; Vietnamese (Windows) | | 1361 | Johab | Korean (Johab) | | 10000 | macintosh | MAC Roman; Western European (Mac) | | 10001 | x-mac-japanese | Japanese (Mac) | | 10002 | x-mac-chinesetrad | MAC Traditional Chinese (Big5); Chinese Traditional (Mac) | | 10003 | x-mac-korean | Korean (Mac) | | 10004 | x-mac-arabic | Arabic (Mac) | | 10005 | x-mac-hebrew | Hebrew (Mac) | | 10006 | x-mac-greek | Greek (Mac) | | 10007 | x-mac-cyrillic | Cyrillic (Mac) | | 10008 | x-mac-chinesesimp | MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) | | 10010 | x-mac-romanian | Romanian (Mac) | | 10017 | x-mac-ukrainian | Ukrainian (Mac) | | 10021 | x-mac-thai | Thai (Mac) | | 10029 | x-mac-ce | MAC Latin 2; Central European (Mac) | | 10079 | x-mac-icelandic | Icelandic (Mac) | | 10081 | x-mac-turkish | Turkish (Mac) | | 10082 | x-mac-croatian | Croatian (Mac) | | 12000 | utf-32 | Unicode UTF-32, little endian byte order; available only to managed | | applications | | | | 12001 | utf-32BE | Unicode UTF-32, big endian byte order; available only to managed | | applications | | | | 20000 | x-Chinese_CNS | CNS Taiwan; Chinese Traditional (CNS) | | 20001 | x-cp20001 | TCA Taiwan | | 20002 | x_Chinese-Eten | Eten Taiwan; Chinese Traditional (Eten) | | 20003 | x-cp20003 | IBM5550 Taiwan | | 20004 | x-cp20004 | TeleText Taiwan | | 20005 | x-cp20005 | Wang Taiwan | | 20105 | x-IA5 | IA5 (IRV International Alphabet No. 5, 7-bit); Western European | | (IA5) | | | | 20106 | x-IA5-German | IA5 German (7-bit) | | 20107 | x-IA5-Swedish | IA5 Swedish (7-bit) | | 20108 | x-IA5-Norwegian | IA5 Norwegian (7-bit) | | 20127 | us-ascii | US-ASCII (7-bit) | | 20261 | x-cp20261 | T.61 | | 20269 | x-cp20269 | ISO 6937 Non-Spacing Accent | | 20273 | IBM273 | IBM EBCDIC Germany | | 20277 | IBM277 | IBM EBCDIC Denmark-Norway | | 20278 | IBM278 | IBM EBCDIC Finland-Sweden | | 20280 | IBM280 | IBM EBCDIC Italy | | 20284 | IBM284 | IBM EBCDIC Latin America-Spain | | 20285 | IBM285 | IBM EBCDIC United Kingdom | | 20290 | IBM290 | IBM EBCDIC Japanese Katakana Extended | | 20297 | IBM297 | IBM EBCDIC France | | 20420 | IBM420 | IBM EBCDIC Arabic | | 20423 | IBM423 | IBM EBCDIC Greek | | 20424 | IBM424 | IBM EBCDIC Hebrew | | 20833 | x-EBCDIC-KoreanExtended | IBM EBCDIC Korean Extended | | 20838 | IBM-Thai | IBM EBCDIC Thai | | 20866 | koi8-r | Russian (KOI8-R); Cyrillic (KOI8-R) | | 20871 | IBM871 | IBM EBCDIC Icelandic | | 20880 | IBM880 | IBM EBCDIC Cyrillic Russian | | 20905 | IBM905 | IBM EBCDIC Turkish | | 20924 | IBM00924 | IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) | | 20932 | EUC-JP | Japanese (JIS 0208-1990 and 0121-1990) | | 20936 | x-cp20936 | Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) | | 20949 | x-cp20949 | Korean Wansung | | 21025 | cp1025 | IBM EBCDIC Cyrillic Serbian-Bulgarian | | 21027 | | (deprecated) | | 21866 | koi8-u | Ukrainian (KOI8-U); Cyrillic (KOI8-U) | | 28591 | iso-8859-1 | ISO 8859-1 Latin 1; Western European (ISO) | | 28592 | iso-8859-2 | ISO 8859-2 Central European; Central European (ISO) | | 28593 | iso-8859-3 | ISO 8859-3 Latin 3 | | 28594 | iso-8859-4 | ISO 8859-4 Baltic | | 28595 | iso-8859-5 | ISO 8859-5 Cyrillic | | 28596 | iso-8859-6 | ISO 8859-6 Arabic | | 28597 | iso-8859-7 | ISO 8859-7 Greek | | 28598 | iso-8859-8 | ISO 8859-8 Hebrew; Hebrew (ISO-Visual) | | 28599 | iso-8859-9 | ISO 8859-9 Turkish | | 28603 | iso-8859-13 | ISO 8859-13 Estonian | | 28605 | iso-8859-15 | ISO 8859-15 Latin 9 | | 29001 | x-Europa | Europa 3 | | 38598 | iso-8859-8-i | ISO 8859-8 Hebrew; Hebrew (ISO-Logical) | | 50220 | iso-2022-jp | ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) | | 50221 | csISO2022JP | ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte | | Kana) | | | | 50222 | iso-2022-jp | ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - | | SO/SI) | | | | 50225 | iso-2022-kr | ISO 2022 Korean | | 50227 | x-cp50227 | ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) | | 50229 | | ISO 2022 Traditional Chinese | | 50930 | | EBCDIC Japanese (Katakana) Extended | | 50931 | | EBCDIC US-Canada and Japanese | | 50933 | | EBCDIC Korean Extended and Korean | | 50935 | | EBCDIC Simplified Chinese Extended and Simplified Chinese | | 50936 | | EBCDIC Simplified Chinese | | 50937 | | EBCDIC US-Canada and Traditional Chinese | | 50939 | | EBCDIC Japanese (Latin) Extended and Japanese | | 51932 | euc-jp | EUC Japanese | | 51936 | EUC-CN | EUC Simplified Chinese; Chinese Simplified (EUC) | | 51949 | euc-kr | EUC Korean | | 51950 | | EUC Traditional Chinese | | 52936 | hz-gb-2312 | HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) | | 54936 | GB18030 | **Windows XP and later:**GB18030 Simplified Chinese (4 byte); Chinese | | Simplified (GB18030) | | | | 57002 | x-iscii-de | ISCII Devanagari | | 57003 | x-iscii-be | ISCII Bengali | | 57004 | x-iscii-ta | ISCII Tamil | | 57005 | x-iscii-te | ISCII Telugu | | 57006 | x-iscii-as | ISCII Assamese | | 57007 | x-iscii-or | ISCII Oriya | | 57008 | x-iscii-ka | ISCII Kannada | | 57009 | x-iscii-ma | ISCII Malayalam | | 57010 | x-iscii-gu | ISCII Gujarati | | 57011 | x-iscii-pa | ISCII Punjabi | | 65000 | utf-7 | Unicode (UTF-7) | | 65001 | utf-8 | Unicode (UTF-8) |