本文原创,转载请注明出处:http://www.cnblogs.com/AdvancePikachu/p/6944870.html

唉哟,这次厉害咯,网上搜罗了好久,终于被我找到汉化的保存对话框了,根据网上的一些前辈总结的内容,做了一些修改,

先放个效果图:

首先需要定义一个OpenFileName的类:

  1. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
  2.  
  3. public class OpenFileName
  4. {
  5. public int structSize = 0;
  6. public IntPtr dlgOwner = IntPtr.Zero;
  7. public IntPtr instance = IntPtr.Zero;
  8. public String filter = null;
  9. public String customFilter = null;
  10. public int maxCustFilter = 0;
  11. public int filterIndex = 0;
  12. public String file = null;
  13. public int maxFile = 0;
  14. public String fileTitle = null;
  15. public int maxFileTitle = 0;
  16. public String initialDir = null;
  17. public String title = null;
  18. public int flags = 0;
  19. public short fileOffset = 0;
  20. public short fileExtension = 0;
  21. public String defExt = null;
  22. public IntPtr custData = IntPtr.Zero;
  23. public IntPtr hook = IntPtr.Zero;
  24. public String templateName = null;
  25. public IntPtr reservedPtr = IntPtr.Zero;
  26. public int reservedInt = 0;
  27. public int flagsEx = 0;
  28. }

  当然,也不是都用到了,只用到了一小部分,有性趣的童鞋可以个性化一下保存对话框,

然后是最重要的委托GetSaveName()方法:

  1. public class DllTest
  2. {
  3. [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
  4. public static extern bool GetSaveFileName([In, Out] OpenFileName ofn);
  5. }

  挡挡挡,最后调用一下即可:

  1. public static void OpenDialog(Action<Stream> onSave)
  2. {
  3. OpenFileName ofn = new OpenFileName();
  4. ofn.structSize = Marshal.SizeOf(ofn);
  5.  
  6. ofn.filter = "Excel (*.xls)\0*.xls\0\0";
  7. ofn.file = new string(new char[]);
  8. ofn.maxFile = ofn.file.Length;
  9. ofn.fileTitle = new string(new char[]);
  10. ofn.maxFileTitle = ofn.fileTitle.Length;
  11. ofn.initialDir = UnityEngine.Application.dataPath;//默认路径
  12. ofn.title = "保存文件";
  13. ofn.defExt = ".xls";//显示文件的类型
  14. ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;
  15. if (DllTest.GetSaveFileName(ofn))
  16. {
  17. dosomething();
  18.  
  19. string Savepath = Path.GetDirectoryName (ofn.file);
  20. Process.Start (Savepath);
  21. }
  22. }

终于搞定保存对话框汉化了,5555,也是不容易啊!

那位小伙伴有更好的方法希望可以分享给我啊!

2017/12/27

前两天同时使用的时候遇到很多问题,原因是封装的不太好,而且也没有注释,逻辑提供不全,今天把完整的代码贴上来,最近比较忙,等空闲了再整理下

首先是调用OpenDialog的方法

  1. void save()
  2. {
  3. SaveDialog.OpenDialog (saveExcel);
  4. }
  5.  
  6. public void saveExcel(Stream s)
  7. {
  8. //excell的逻辑
  9. ExcelWrite ew = new ExcelWrite ();
  10. ew.WriteToStream (s);
  11. }

  然后是 ExcelWrite.cs

  1. public void WriteToStream(Stream s)
  2. {
  3. IWorkbook workbook = new HSSFWorkbook ();
  4. ISheet sheet = workbook.CreateSheet ();
  5.  
  6. IRow row = sheet.CreateRow (0);//参数0表示第0行
  7.  
  8. string[] firstRow = new string[]
  9. {
  10. "ID",
  11. "性别",
  12. "博客"
  13. };
  14.  
  15. for (int i = 0; i < firstRow.Length; i++)
  16. {
  17. ICell cell = row.CreateCell (i);
  18. cell.SetCellValue (firstRow [i]);
  19. }
  20.  
  21. IRow row2 = sheet.CreateRow (1);
  22.  
  23. string[] secondRow = new string[]
  24. {
  25. "AdvancePikachu",
  26. "男",
  27. "http://www.cnblogs.com/AdvancePikachu/"
  28. };
  29.  
  30. for (int i = 0; i < secondRow.Length; i++)
  31. {
  32. ICell cell = row2.CreateCell (i);
  33. cell.SetCellValue (secondRow [i]);
  34. }
  35.  
  36. workbook.Write (s);
  37. }

  这个excel用的是NPOI写的,效果挺好的,最后附上demo实例,欢迎各路大神提供更好的思路!

  1. Test

Unity C# GetSaveFileName()的应用的更多相关文章

  1. Unity C# 运用 GetSaveFileName() 导出Excel文件

    本文原创,转载请注明出处:http://www.cnblogs.com/AdvancePikachu/p/6944870.html 唉哟,这次厉害咯,网上搜罗了好久,终于被我找到汉化的保存对话框了,根 ...

  2. unity 实现调用Windows窗口/对话框交互

    Unity调用Window窗口 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...

  3. Unity 3D调用Windows打开、保存窗口、文件浏览器

    Unity调用Window窗口 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...

  4. Unity中调用Windows窗口句柄以及根据需求设置并且解决扩展屏窗体显示错乱/位置错误的Bug

    问题背景: 现在在搞PC端应用开发,我们开发中需要调用系统的窗口以及需要最大化最小化,缩放窗口拖拽窗口,以及设置窗口位置,去边框等功能 解决根据: 使用user32.dll解决 具体功能: Unity ...

  5. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  6. 聊聊Unity项目管理的那些事:Git-flow和Unity

    0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...

  7. Unity游戏内版本更新

    最近研究了一下游戏内apk包更新的方法. ios对于应用的管理比较严格,除非热更新脚本,不太可能做到端内大版本包的更新.然而安卓端则没有此限制.因此可以做到不跳到网页或应用商店,就覆盖更新apk包. ...

  8. Unity 序列化

    Script Serialization http://docs.unity3d.com/Manual/script-Serialization.html 自定义序列化及例子: http://docs ...

  9. Unity 序列化 总结

    查找了 Script Serialization http://docs.unity3d.com/Manual/script-Serialization.html 自定义序列化及例子: http:// ...

随机推荐

  1. IE和其他浏览器用JS新窗口打开的问题

    Chrome中 window.open(pageURL,name,parameters) pageURL 为子窗口路径 name 为子窗口句柄 parameters 为窗口参数(各参数用逗号分隔) 例 ...

  2. [编织消息框架][传输协议]stcp简单开发

    测试代码 public class ServerSTCP { static int SERVER_PORT = 3456; static int US_STREAM = 0; static int F ...

  3. bootstrap快速入门笔记(四)-less用法指南, mixin和变量

    一,less变量,less文件 1.bootstrap.less 这是主要的 Less 文件.该文件中导入了一些其他的 less 文件.该文件中没有任何代码. 2.forms.less 这个 Less ...

  4. PPT制作线条动画

    0.小叙闲言 今天在用PPT做动画的时候小有心得,百度了一下线条动画制作,有一个贴子里面的讨论,也给了我一些灵感,贴子地址:http://www.rapidbbs.cn/thread-24577-1- ...

  5. 简单的jquery左侧导航栏和页面选中效果

    这里是要实现导航的左侧并选中的,此功能需引用jquery 效果: 左侧导航 <div class="box"> <ul class="menu" ...

  6. DirectFB 之 环境配置

    1. 准备 directFB下载地址:http://www.directfb.org/index.php?path=Main%2FDownloads 本人采用的版本是DirectFB-1.5.3.ta ...

  7. JAVA中令人疑惑的字符串

    Java中不同的字符串存在于同一个存储池中,字符串变量将指向存储池中相应的位置,也就是字符串变量里面包含的并不是字符串而是这个字符串对象的内存地址. String a = "123" ...

  8. 记录——excel导出lua工具(python实现)

    项目需要一个从excel导出lua配置表的工具,之前的工具是主程写的,效率极差,i7 CPU 一次全部导出要花掉1个多小时.匪夷所思的是,这么渣的效率,居然用了整整一年.当 然,中途有人反映效率差,主 ...

  9. linux-redhat-iso 下载

    http://archive.download.redhat.com/pub/redhat/linux/9/en/iso/i386/ http://www.jb51.net/do/plus/downl ...

  10. Python基本语法--语句

    # -*- coding: utf-8 -*- #条件语句 ''' if 判断条件: 执行语句…… else: 执行语句…… ''' flag = False name = 'python' if n ...