? ? ?/// <summary>
? ? ? ? /// Excel轉換成DataSet(.xlsx/.xls)
? ? ? ? /// </summary>
? ? ? ? /// <param name="filePath">Excel文件路徑</param>
? ? ? ? /// <param name="strMsg"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static DataSet ExcelToDataSet(string filePath, out string strMsg)
? ? ? ? {
? ? ? ? ? ? strMsg = "";
? ? ? ? ? ? DataSet ds = new DataSet();
? ? ? ? ? ? DataTable dt = new DataTable();
? ? ? ? ? ? string fileType = Path.GetExtension(filePath).ToLower();
? ? ? ? ? ? string fileName = Path.GetFileName(filePath).ToLower();
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ISheet sheet = null;
? ? ? ? ? ? ? ? int sheetNumber = 0;
? ? ? ? ? ? ? ? // 加載Excel文件
? ? ? ? ? ? ? ? using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if (fileType == ".xlsx")
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? // 2007版本
? ? ? ? ? ? ? ? ? ? ? ? XSSFWorkbook workbook = new XSSFWorkbook(fs);
? ? ? ? ? ? ? ? ? ? ? ? sheetNumber = workbook.NumberOfSheets;
? ? ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < sheetNumber; i++)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? string sheetName = workbook.GetSheetName(i);
? ? ? ? ? ? ? ? ? ? ? ? ? ? sheet = workbook.GetSheet(sheetName);
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (sheet != null)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dt = GetSheetDataTable(sheet, out strMsg);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (dt != null)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dt.TableName = sheetName.Trim();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ds.Tables.Add(dt);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //MessageBox.Show("Sheet數據獲取失敗,原因:" + strMsg);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? else if (fileType == ".xls")
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? // 2003版本
? ? ? ? ? ? ? ? ? ? ? ? HSSFWorkbook workbook = new HSSFWorkbook(fs);
? ? ? ? ? ? ? ? ? ? ? ? sheetNumber = workbook.NumberOfSheets;
? ? ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < sheetNumber; i++)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? string sheetName = workbook.GetSheetName(i);
? ? ? ? ? ? ? ? ? ? ? ? ? ? sheet = workbook.GetSheet(sheetName);
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (sheet != null)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dt = GetSheetDataTable(sheet, out strMsg);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (dt != null)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dt.TableName = sheetName.Trim();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ds.Tables.Add(dt);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //MessageBox.Show("Sheet數據獲取失敗,原因:" + strMsg);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return ds;
? ? ? ? ? ? }
? ? ? ? ? ? catch (Exception ex)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? strMsg = ex.Message;
? ? ? ? ? ? ? ? return null;
? ? ? ? ? ? }
? ? ? ? }