按行或列读取excel文档

来源:互联网 发布:mac软件大全 编辑:程序博客网 时间:2024/05/03 05:18

      在项目开发中,有好多数据客户是保存在Excel表中,这些数据中可能有部分是需要导入项的数据库,于是就如有了项目题目这样的需求。即需要将excel表某些列、若干行的数据导入项目。

      用C#来做,需要在项目导入

      using Microsoft.Office.Interop.Excel;

     具体操作代码如下:

            #region 读EXCEL文件

          //参数是文件名
        private void  ReadExelToDS(String ExcelFileName)
        {

            //要读取的列名放在数组中
            strArr = txtCol.Text.Split(',');
            //要读取的起止行放在数组中        

            strArr1 = txtRow.Text.Split('-');
            //取起始行
            iStartRow = int.Parse(strArr1[0]);
           //取终止行
            iEndRow = int.Parse(strArr1[1]);
            sbRang = new StringBuilder(30);

            //打开excel文档

            Microsoft.Office.Interop.Excel.ApplicationClass app = new ApplicationClass();
            app.Visible = false;

            WorkbookClass w = (WorkbookClass)app.Workbooks.Open(ExcelFileName, //Environment.CurrentDirectory+
            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);

            object missing = Type.Missing; 
            Sheets sheets = w.Worksheets;
            Worksheet datasheet = null;
            //取Sheet1表
            foreach (Worksheet sheet in sheets)
            {
                if (sheet.Name == "Sheet1")
                {
                    datasheet = sheet;
                    break;
                }
            }
            if (null == datasheet)
            {
                MessageBox.Show(this, "没有名称为 Sheet1 的Sheet.");
                return ;
            }

           //按单元格读取字符串
            int i,j;
            Range rng;
            string strRange;
            string[] strValue=new string[strArr.Length];
           

            for (i = iStartRow; i <= iEndRow; i++)
            {
                for (j = 0; j < strArr.Length; j++)
                {
                    sbRang.Append(strArr[j]);
                    sbRang.Append(i.ToString());
                    strRange = sbRang.ToString();
                    rng = datasheet.get_Range(strRange ,strRange );
                    strValue[j] = (rng.Text == null) ? "0" : rng.Text.ToString().Trim();
                    sbRang.Remove(0, sbRang.Length);
                }

               //将取得的数据写入对象中,然后入库
                if(WriteToModel(strValue))
                    WriteToDataSet(sysOrgan);           
            }

            //将数据显示在listview中
            DsToListView();

           //读完后,退出excel

            app.Quit();
            NAR(sheets);
            NAR(w);
            NAR(app);
            app = null;           
            return;
        }

        #endregion

     退出excel的方法

        //释放对象计数器
        private void NAR(object o)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
            }
            catch { }
            finally
            {
                o = null;
            }
        }

        这些可以随心所欲地控制数据输入,效果挺不错。

        第一次写博客,希望大家多多支持!

原创粉丝点击