您的位置:首页 > 其它

Excel导入DataTable

2014-03-11 12:07 225 查看
[align=left]/// <summary>[/align]
[align=left] /// Excel导入DataTable[/align]
[align=left] /// </summary>[/align]
[align=left] /// <param name="strFileName"> 文件名称</param>[/align]
[align=left] /// <param name="isHead"> 是否包含表头 </param>[/align]
[align=left] /// <param name="iSheet"> Sheet</param>[/align]
[align=left] /// <param name="strErrorMessage"> 错误信息</param>[/align]
[align=left] /// <param name="iRowsIndex"> 导入的Excel的开始行 </param>[/align]
[align=left] /// <returns></returns>[/align]
[align=left] public static System.Data.DataTable GetDataFromExcel( string strFileName, bool isHead, int iSheet,[/align]
[align=left] string strErrorMessage, int iRowsIndex)[/align]
[align=left] {[/align]
[align=left] if (!strFileName.ToUpper().EndsWith(".XLSX"))[/align]
[align=left] {[/align]
[align=left] strErrorMessage = "文件类型与系统设定不一致,请核对!" ;[/align]
[align=left] return null ;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] Microsoft.Office.Interop.Excel. Application appExcel = new Microsoft.Office.Interop.Excel.Application ();[/align]
[align=left] Microsoft.Office.Interop.Excel. Workbook workbookData;[/align]
[align=left] Microsoft.Office.Interop.Excel. Worksheet worksheetData;[/align]
[align=left] [/align]
[align=left] workbookData = appExcel.Workbooks.Open(strFileName, System.Reflection. Missing.Value, System.Reflection.Missing .Value, System.Reflection.Missing.Value, System.Reflection. Missing.Value, System.Reflection.Missing .Value,[/align]
[align=left] System.Reflection. Missing.Value, System.Reflection.Missing .Value, System.Reflection.Missing .Value, System.Reflection.Missing.Value, System.Reflection. Missing.Value, System.Reflection.Missing .Value, System.Reflection.Missing.Value);[/align]
[align=left] [/align]
[align=left] worksheetData = (Microsoft.Office.Interop.Excel. Worksheet)workbookData.Sheets[iSheet];[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] Microsoft.Office.Interop.Excel. Range xlRang = null ;[/align]
[align=left] int iRowCount = worksheetData.UsedRange.Cells.Rows.Count;[/align]
[align=left] int iParstedRow = 0, iCurrSize = 0;[/align]
[align=left] int iEachSize = 1000; // each time you[/align]
[align=left] int iColumnAccount = worksheetData.UsedRange.Cells.Columns.Count;[/align]
[align=left] int iHead = iRowsIndex;[/align]
[align=left] [/align]
[align=left] if (isHead)[/align]
[align=left] iHead = iRowsIndex + 1;[/align]
[align=left] [/align]
[align=left] System.Data. DataTable dt = new System.Data.DataTable();[/align]
[align=left] for (int i = 1; i <= iColumnAccount; i++)[/align]
[align=left] {[/align]
[align=left] if (isHead)[/align]
[align=left] dt.Columns.Add(appExcel.Cells[iRowsIndex, i].FormulaLocal);[/align]
[align=left] else[/align]
[align=left] dt.Columns.Add( "Columns" + i.ToString());[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] object[,] objVal = new object[iEachSize, iColumnAccount];[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] iCurrSize = iEachSize;[/align]
[align=left] while (iParstedRow < iRowCount)[/align]
[align=left] {[/align]
[align=left] if ((iRowCount - iParstedRow) < iEachSize)[/align]
[align=left] iCurrSize = iRowCount - iParstedRow;[/align]
[align=left] [/align]
[align=left] xlRang = worksheetData.get_Range( "A" + ((int )(iParstedRow + iHead)).ToString(), ((char)('A' + iColumnAccount - 1)).ToString()[/align]
[align=left] + ((( int)(iParstedRow + iCurrSize + 1)).ToString()));[/align]
[align=left] [/align]
[align=left] objVal = ( object[,])xlRang.Value2;[/align]
[align=left] [/align]
[align=left] int iLength = objVal.Length / iColumnAccount;[/align]
[align=left] [/align]
[align=left] for (int i = 1; i < iLength; i++)[/align]
[align=left] {[/align]
[align=left] DataRow dr = dt.NewRow();[/align]
[align=left] for (int j = 1; j <= iColumnAccount; j++)[/align]
[align=left] {[/align]
[align=left] if (objVal[i, j] != null )[/align]
[align=left] {[/align]
[align=left] dr[j - 1] = objVal[i, j].ToString();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] dt.Rows.Add(dr);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] iParstedRow = iParstedRow + iCurrSize;[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] System.Runtime.InteropServices. Marshal.ReleaseComObject(xlRang);[/align]
[align=left] xlRang = null;[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] catch (Exception ex)[/align]
[align=left] {[/align]
[align=left] appExcel.Quit();[/align]
[align=left] strErrorMessage = ex.Message;[/align]
[align=left] return null ;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] appExcel.Quit();[/align]
[align=left] [/align]
[align=left] return dt;[/align]
[align=left] [/align]
[align=left] }[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: