using Community.DAL; using Community.Model.Build; //using NPOI.CS; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Community.Excel.Common { public class XlsTools { //public static readonly ExcelHelper _excel = new ExcelHelper(); /// /// 读取文件至字节数组 /// /// 文件名 /// 字节数组 public static byte[] FileToBytes(string fileName) { byte[] bytes = null; FileStream fs = null; try { FileInfo file = new FileInfo(fileName); if (file != null) { fs = file.OpenRead(); bytes = new Byte[fs.Length]; fs.Read(bytes, 0, Convert.ToInt32(fs.Length)); fs.Flush(); } } catch { bytes = null; } finally { if (fs != null) { fs.Close(); } } return bytes; } //public static DataTable ReadXls(string xls) //{ // if (string.IsNullOrEmpty(xls) || !File.Exists(xls)) // { // MessageBox.Show("Excel文件不存在,请重新选择!"); // return null; // } // byte[] bytes = XlsTools.FileToBytes(xls); // if (null == bytes || bytes.Length == 0) // { // MessageBox.Show("无法读取Excel文件!"); // return null; // } // return _excel.ExcelToTable(bytes); //} public static DataTable ReadXls(string xls, int sheet) { if (string.IsNullOrEmpty(xls) || !File.Exists(xls)) { MessageBox.Show("Excel文件不存在,请重新选择!"); return null; } return ReadExcel.ReadXls(xls, sheet - 1); } public static List ProcessData(string[] splits, string name, DataTable dt) { int bid = HouseDAL.GetBuildingId(name); if (bid == -1) { MessageBox.Show("没有读取到楼宇Id!"); return null; } House h = null; List list = new List(); for (int i = 0, c = dt.Rows.Count; i < c; i++) { DataRow dr = dt.Rows[i]; string title = GetStr(dr, 1); if (title.IndexOf("房屋地址") > -1) { h = new House(bid); SetHouse(i + 1, h, dr, 2, splits); list.Add(h); } if (title.IndexOf("房屋状态") > -1) { SetStatus(h, dr, 2); } if (title.IndexOf("房主信息") > -1) { SetHousehold(h, dr, 1); } if (title.IndexOf("房主家庭成员") > -1) { SetHousehold(h, dr, 2); } if (title.IndexOf("承租人") > -1) { SetHousehold(h, dr, 3); } } return list; } public static string GetStr(DataRow dr, int col) { if (col >= dr.Table.Columns.Count) return string.Empty; object obj = dr[col]; if (obj == null || obj == DBNull.Value) { return string.Empty; } return obj.ToString().Trim(); } public static void SetHouse(int i, House h, DataRow dr, int col, string[] splits) { h.FullName = GetStr(dr, col); try { string[] strs = h.FullName.Split(splits, StringSplitOptions.RemoveEmptyEntries); h.BuildNum = strs[0]; if (strs.Length > 1) h.Unit = strs[1]; if (strs.Length > 2) h.HouseNum = strs[2]; } catch //(Exception ex) { MessageBox.Show("行号:" + i + "\r\n" + h.FullName + ":门牌号异常!"); } } // 自住\出租\闲置 public static void SetStatus(House h, DataRow dr, int col) { string str = GetStr(dr, col); if (str.Length == 0) { h.HouseState = 1; return; } string status = str.Substring(0, 2); switch (status) { case "自住": h.HouseState = 1; break; case "出租": h.HouseState = 2; break; case "闲置": h.HouseState = 3; break; } //h.HouseStatus = str.Substring(0, 2); h.Remark = str.Replace(status, "").Replace("(", "").Replace(")", "").Trim(); } public static void SetHousehold(House h, DataRow dr, int houseType) { string name = GetStr(dr, 2); if (string.IsNullOrEmpty(name)) return; Household hh = new Household(); hh.Name = name; hh.HoldType = houseType; hh.Gender = GetStr(dr, 3); hh.Nation = GetStr(dr, 4); hh.Political = GetStr(dr, 5); hh.IdNum = GetStr(dr, 6).ToUpper(); hh.Addr = GetStr(dr, 7); hh.Phone = GetStr(dr, 8); hh.Remark = GetStr(dr, 9); h.Holds.Add(hh); } public static int InsertHouse(List list) { try { int rs = 0; foreach (House h in list) { h.Id = HouseDAL.GetHouseMaxId(); int count = HouseDAL.InsertHouse(h); if (count == 0) continue; foreach (Household hh in h.Holds) { hh.House = h.Id; count = HouseDAL.InsertHousehold(hh); } rs++; } return rs; } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); } return 0; } } }