/// <summary> /// 打开系统对话框选择一个文件。 /// </summary> /// <returns></returns> public static System.IO.FileInfo SelectFile() { System.IO.FileInfo theFile = null; // 在WPF中, OpenFileDialog位于Microsoft.Win32名称空间 OpenFileDialog dialog = new OpenFileDialog { Filter = "工作文档|*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.wps;*.pdf;*.jpg;*.jpeg;*.png;*.gif;|压缩文档|*.rar;*.zip|所有文件|*.*" }; if (dialog.ShowDialog() == true) { try { theFile = new System.IO.FileInfo(dialog.FileName); if (theFile.Length > 1073741824)//1G { AppFuns.ShowMessage("文件大于1G,无法保存!"); return(null); } } catch (Exception Error) { AppFuns.ShowMessage($"读取文件出错(正在使用?){Error.Message}"); return(null); } } return(theFile); }
/// <summary> /// NPOI导出Excel,不依赖本地是否装有Excel,导出速度快 /// </summary> /// <param name="dataGridView1">要导出的dataGridView控件</param> /// <param name="sheetName">sheet表名</param> private void ExportToExcel(List <Lib.MemberInfoEntity> EntityList, string sheetName) { if (EntityList == null || EntityList.Count < 1) { return; } System.Windows.Forms.SaveFileDialog fileDialog = new System.Windows.Forms.SaveFileDialog(); fileDialog.Filter = "Excel|*.xls"; if (fileDialog.ShowDialog() == System.Windows.Forms.DialogResult.Cancel) { return; } //不允许dataGridView显示添加行,负责导出时会报最后一行未实例化错误 HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet(sheetName); IRow rowHead = sheet.CreateRow(0); PropertyInfo[] EntityProps = EntityList[0].GetType().GetProperties(); //填写表头 for (int i = 0; i < EntityProps.Count(); i++) { rowHead.CreateCell(i, CellType.String).SetCellValue(EntityProps[i].Name); } //填写内容 for (int i = 0; i < EntityList.Count; i++) { IRow row = sheet.CreateRow(i + 1); for (int j = 0; j < EntityProps.Count(); j++) { object TempObj = EntityProps[j].GetValue(EntityList[i]); if (TempObj != null) { row.CreateCell(j, CellType.String).SetCellValue(EntityProps[j].GetValue(EntityList[i]).ToString()); } else { row.CreateCell(j, CellType.String).SetCellValue(""); } } } using (FileStream stream = File.OpenWrite(fileDialog.FileName)) { workbook.Write(stream); stream.Close(); } AppFuns.ShowMessage("导出数据成功!", "提示"); GC.Collect(); }