using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.IO; using System.Windows.Forms; using DevComponents.DotNetBar.SuperGrid; namespace WCS_Client.UC { public class ExportUtil { public static string ShowSaveFileDialog() { try { //对话框 SaveFileDialog Sfd = new SaveFileDialog(); Sfd.Title = "导出数据"; Sfd.Filter = "EXECL文件(*.xls) |*.xls|EXECL文件(*.xlsx) |*.xlsx|文本文件(*.txt)|*.txt"; Sfd.FilterIndex = 0; if (Sfd.ShowDialog() == DialogResult.OK) { return Sfd.FileName; } } catch { } return ""; } public static void Execute(string PathFileName, DataTable dt, List gcList) { try { if (gcList == null || gcList.Count <= 0) { return; } if (dt == null) { dt = new DataTable(); } if (!string.IsNullOrEmpty(PathFileName)) { FileInfo fi = new FileInfo(PathFileName); if (!Directory.Exists(fi.DirectoryName)) { Directory.CreateDirectory(fi.DirectoryName); } if (File.Exists(PathFileName)) { File.Delete(PathFileName); } FileStream fs = new FileStream(PathFileName, FileMode.Create, FileAccess.Write); if (fi.Extension.ToUpper() == ".XLS" || fi.Extension.ToUpper() == ".XLS") { Export_Excel(fs, dt, gcList); } else if (fi.Extension.ToUpper() == ".TXT") { Export_Txt(fs, dt, gcList); } } } catch { } } private static void Export_Excel(FileStream fs, DataTable dt, List gcList) { try { //创建Excel文件的对象 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1"); //添加一个sheet int GCCount = gcList.Count; NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0); for (int i = 0; i < GCCount; i++) { string ColName = gcList[i].DataPropertyName; if (!dt.Columns.Contains(ColName)) { dt.Columns.Add(ColName, typeof(string)); } row1.CreateCell(i).SetCellValue(gcList[i].HeaderText); } int r = 1; foreach (DataRow dr in dt.Rows) { NPOI.SS.UserModel.IRow erow = sheet1.CreateRow(r); for (int i = 0; i < GCCount; i++) { object o = dr[gcList[i].DataPropertyName]; erow.CreateCell(i).SetCellValue(o != null ? o.ToString() : ""); } r++; } book.Write(fs); book = null; } catch { } finally { if (fs != null) { fs.Close(); fs.Dispose(); } } } private static void Export_Txt(FileStream fs, DataTable dt, List gcList) { try { //创建Excel文件的对象 StreamWriter strwriter = new StreamWriter(fs); string s = ""; bool IsTag = true; foreach (GridColumn gc in gcList) { string ColName = gc.DataPropertyName; if (!dt.Columns.Contains(ColName)) { dt.Columns.Add(ColName, typeof(string)); } if (IsTag) { IsTag = false; s = gc.HeaderText; } else { s = s + "," + gc.HeaderText; } } strwriter.WriteLine(s); foreach (DataRow dr in dt.Rows) { s = ""; IsTag = true; foreach (GridColumn gc in gcList) { object o = dr[gc.DataPropertyName]; string k = (o != null ? o.ToString() : ""); if (IsTag) { IsTag = false; s = k; } else { s = s + "," + k; } } strwriter.WriteLine(s); } strwriter.Flush(); strwriter.Close(); strwriter.Dispose(); } catch { } finally { fs.Close(); fs.Dispose(); } } } }