楼主: catherin

[精华] 如何把EXCEL表格资料读取并存在DB TABLE

[复制链接]
求职 : 技术/实施/服务顾问
论坛徽章:
43
会员2007贡献徽章
日期:2007-09-26 18:42:10参与WIN7挑战赛纪念
日期:2009-11-06 16:05:25IT宝贝
日期:2009-11-17 09:33:292010新春纪念徽章
日期:2010-03-01 11:04:582010年世界杯参赛球队:韩国
日期:2010-03-30 15:01:292010年世界杯参赛球队:葡萄牙
日期:2010-04-06 08:33:102010年世界杯参赛球队:日本
日期:2010-08-06 12:52:402010年世界杯参赛球队:巴西
日期:2010-08-10 11:56:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:43:33
11#
 楼主| 发表于 2012-5-23 10:27 | 只看该作者
程式代码已经上传。

WOM018PKG_WATERFALL.sql

14.54 KB, 下载次数: 109

使用道具 举报

回复
求职 : 技术/实施/服务顾问
论坛徽章:
43
会员2007贡献徽章
日期:2007-09-26 18:42:10参与WIN7挑战赛纪念
日期:2009-11-06 16:05:25IT宝贝
日期:2009-11-17 09:33:292010新春纪念徽章
日期:2010-03-01 11:04:582010年世界杯参赛球队:韩国
日期:2010-03-30 15:01:292010年世界杯参赛球队:葡萄牙
日期:2010-04-06 08:33:102010年世界杯参赛球队:日本
日期:2010-08-06 12:52:402010年世界杯参赛球队:巴西
日期:2010-08-10 11:56:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:43:33
12#
 楼主| 发表于 2012-5-23 10:41 | 只看该作者
版主呢?快来给我加精啊

使用道具 举报

回复
论坛徽章:
0
13#
发表于 2012-5-23 15:51 | 只看该作者
1.external table
2.if you are using it for EBS, DDE or test_io

使用道具 举报

回复
论坛徽章:
625
奥运会纪念徽章:铁人三项
日期:2012-11-13 21:13:47奥运会纪念徽章:铁人三项
日期:2012-11-13 21:13:47奥运会纪念徽章:花样游泳
日期:2012-10-20 22:12:29奥运会纪念徽章:垒球
日期:2012-10-20 22:12:29奥运会纪念徽章:足球
日期:2012-10-25 09:22:46奥运会纪念徽章:赛艇
日期:2012-08-31 23:22:39奥运会纪念徽章:摔跤
日期:2012-09-01 11:49:03奥运会纪念徽章:跆拳道
日期:2012-09-01 11:49:03奥运会纪念徽章:垒球
日期:2012-09-01 11:49:03奥运会纪念徽章:棒球
日期:2012-09-01 16:17:53
14#
发表于 2012-5-24 20:21 | 只看该作者
catherin 发表于 2012-5-23 10:27
程式代码已经上传。

拜读一下!

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2012-5-25 15:16 | 只看该作者
很久之前写的,把excel放到dt里面

/// <summary>
        /// Excel导入DataTable
        /// </summary>
        /// <param name="strFileName">文件名称</param>
        /// <param name="isHead">是否包含表头</param>
        /// <param name="iSheet">Sheet</param>
        /// <param name="strErrorMessage">错误信息</param>
        /// <param name="iRowsIndex">导入的Excel的开始行</param>
        /// <returns></returns>
        public System.Data.DataTable GetDataFromExcel(string strFileName, bool isHead, string Sheet,
            ref string strErrorMessage, int iRowsIndex)
        {
            #region Excel导入DataTable
            //if (!strFileName.ToUpper().EndsWith(".XLS"))
            //{
            //    strErrorMessage = "文件类型与系统设定不一致,请核对!";
            //    return null;
            //}

            Microsoft.Office.Interop.Excel.Application appExcel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook workbookData;
            Microsoft.Office.Interop.Excel.Worksheet worksheetData;

            workbookData = appExcel.Workbooks.Open(strFileName, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value,Missing.Value);

            Worksheet worksheet = (Worksheet)appExcel.ActiveSheet;
            worksheetData = (Microsoft.Office.Interop.Excel.Worksheet)workbookData.Sheets[worksheet.Name];
            Microsoft.Office.Interop.Excel.Range xlRang = null;
            int iRowCount = worksheetData.UsedRange.Cells.Rows.Count;            
            int iParstedRow = 0, iCurrSize = 0;
            int iEachSize = 50000;  
            int iColumnAccount = worksheetData.UsedRange.Cells.Columns.Count;
            int iHead = iRowsIndex;
            colindex = iColumnAccount;

            if (isHead)
                iHead = iRowsIndex+1;

            System.Data.DataTable dt = new System.Data.DataTable();
            for (int i = 1; i <= iColumnAccount; i++)
            {
                if (isHead)
                {
                    Range rg = worksheetData.get_Range(worksheetData.Cells[iRowsIndex, i],
                        worksheetData.Cells[iRowsIndex, i]);

                    dt.Columns.Add(worksheetData.get_Range(worksheetData.Cells[iRowsIndex, i],
                        worksheetData.Cells[iRowsIndex, i]).Text.ToString());
                }
                else
                {
                    dt.Columns.Add("Columns" + i.ToString());
                }
            }
         
            object[,] objVal = new object[iEachSize, iColumnAccount];
            try
            {
                iCurrSize = iEachSize;
                while (iParstedRow < iRowCount)
                {
                    if ((iRowCount - iParstedRow) < iEachSize)
                    {
                        iCurrSize = iRowCount - iParstedRow;
                    }

                    xlRang = worksheetData.get_Range("A" + ((int)(iParstedRow + iHead)).ToString(),
                        NumtoStr(iColumnAccount) + (((int)(iParstedRow + iCurrSize )).ToString()));

                    //MessageBox.Show(NumtoStr(iColumnAccount));
                    //xlRang = worksheetData.get_Range("A2", "F20");

                    objVal = (object[,])xlRang.Value2;

                    int iLength = objVal.Length / iColumnAccount;

                    for (int i = 1; i <= iLength; i++)
                    {
                        DataRow dr = dt.NewRow();
                        int NullColumnCount = 0;
                        for (int j = 1; j <= iColumnAccount; j++)
                        {
                            if (objVal[i, j] != null)
                            {                                
                                dr[j - 1] = objVal[i, j].ToString();
                            }
                            else
                            {
                                NullColumnCount++;
                            }
                        }
                        if (NullColumnCount != iColumnAccount)
                        {
                            dt.Rows.Add(dr);
                        }
                    }
                    iParstedRow = iParstedRow + iCurrSize;

                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRang);
                xlRang = null;

            }
            catch (Exception ex)
            {
                appExcel.Quit();
                strErrorMessage = ex.Message;
                return null;
            }
            appExcel.Quit();
            return dt;
            #endregion
        }

使用道具 举报

回复
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
16#
发表于 2012-5-30 15:48 | 只看该作者
catherin 发表于 2012-5-22 09:54
需要把数据存成CSV格式,以逗号分割。然后把数据一行一行读出来。并以逗号分隔符来取数据。

大狭,怎么一行一行的读出来,能分享一下步骤吗,多谢了!

使用道具 举报

回复
求职 : 技术/实施/服务顾问
论坛徽章:
43
会员2007贡献徽章
日期:2007-09-26 18:42:10参与WIN7挑战赛纪念
日期:2009-11-06 16:05:25IT宝贝
日期:2009-11-17 09:33:292010新春纪念徽章
日期:2010-03-01 11:04:582010年世界杯参赛球队:韩国
日期:2010-03-30 15:01:292010年世界杯参赛球队:葡萄牙
日期:2010-04-06 08:33:102010年世界杯参赛球队:日本
日期:2010-08-06 12:52:402010年世界杯参赛球队:巴西
日期:2010-08-10 11:56:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:43:33
17#
 楼主| 发表于 2012-5-31 10:58 | 只看该作者
如下即为:
打开文件 。V_FILE_LOCATION为文件所在路径,V_FILE_NAME为文件名
f_file_list := UTL_FILE.fopen (v_file_location, v_file_name, 'R');
取出文件
UTL_FILE.get_line (f_file_list, files_string);
写在一个LOOP循环里即可。

使用道具 举报

回复
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
18#
发表于 2012-6-5 16:37 | 只看该作者
catherin 发表于 2012-5-22 09:54
需要把数据存成CSV格式,以逗号分割。然后把数据一行一行读出来。并以逗号分隔符来取数据。

大狭,关键是怎么读呢??

使用道具 举报

回复
求职 : 技术/实施/服务顾问
论坛徽章:
43
会员2007贡献徽章
日期:2007-09-26 18:42:10参与WIN7挑战赛纪念
日期:2009-11-06 16:05:25IT宝贝
日期:2009-11-17 09:33:292010新春纪念徽章
日期:2010-03-01 11:04:582010年世界杯参赛球队:韩国
日期:2010-03-30 15:01:292010年世界杯参赛球队:葡萄牙
日期:2010-04-06 08:33:102010年世界杯参赛球队:日本
日期:2010-08-06 12:52:402010年世界杯参赛球队:巴西
日期:2010-08-10 11:56:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:43:33
19#
 楼主| 发表于 2012-6-6 17:01 | 只看该作者
设定两个变量啊,起始点,结束点。反复利用SUBSTR,INSTR函数即可。具体请看程式代码。

使用道具 举报

回复
论坛徽章:
104
生肖徽章2007版:猪
日期:2012-07-12 14:24:56菠菜神灯
日期:2013-05-26 22:03:18生肖徽章2007版:猪
日期:2012-07-19 11:10:12生肖徽章2007版:猪
日期:2012-07-19 11:10:12生肖徽章2007版:猪
日期:2012-07-11 19:07:11生肖徽章2007版:猪
日期:2012-07-19 11:10:12生肖徽章2007版:猪
日期:2012-07-19 11:10:12ITPUB伯乐
日期:2012-05-22 15:05:25NBA季后赛纪念徽章
日期:2013-06-21 14:52:05NBA季后赛大富翁
日期:2013-06-21 14:57:11
20#
发表于 2012-6-8 17:19 | 只看该作者
牛人!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表