当前位置:编程学习 > C#/ASP.NET >>

急求解决方案~~

现有此段程序,找人代写的,现在需要把EXCEL表格里的27行到290行theta列和gain.line列数据再重复读入一次进行计算,怎么实现,请高手帮忙修改。。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.IO;

namespace math
{
    public partial class Form1 : Form
    {
        private string strOpenFilePath = "";
        private string strSaveFilePath = "";
        private double iValue = 0;
        public Form1()
        {
            InitializeComponent();

            btnOpen.Click += new EventHandler(btnOpen_Click);
            btnSave.Click += new EventHandler(btnSave_Click);
            btnCompute.Click += new EventHandler(btnCompute_Click);
            btnClear.Click += new EventHandler(btnClear_Click);
            btnClose.Click += new EventHandler(btnClose_Click);

            btnCompute.Enabled = false;
            btnSave.Enabled = false;
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();//关闭按钮
        }

        /*清除按钮功能*/
        private void btnClear_Click(object sender, EventArgs e)
        {
            txtSaveFilePath.Text = "";
            txtOpenFliePath.Text = "";
            txtValue.Text = "";
            btnCompute.Enabled = false;
            btnSave.Enabled = false;
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                strSaveFilePath = saveFileDialog1.FileName;
                txtSaveFilePath.Text = strSaveFilePath;

                string strMsg = "";

                WriteFile(out strMsg);

                if (strMsg != "")
                    MessageBox.Show(strMsg);
            }
            else
            {
                txtSaveFilePath.Text = "";
            }
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                strOpenFilePath = openFileDialog1.FileName;
                txtOpenFliePath.Text = strOpenFilePath;
                btnCompute.Enabled = true;
            }
            else
            {
                txtOpenFliePath.Text = "";
                btnCompute.Enabled = false;
            }
        }
        
        private void btnCompute_Click(object sender, EventArgs e)
        {
            string strMsg = "";
            DataSet ds = ReadExcle(strOpenFilePath, out strMsg);
            if (strMsg != "")
            {
                MessageBox.Show(strMsg);

                return;
            }

            if (ds.Tables.Count > 0)
            {
                iValue = 0;

                ComputeValue(ds, out iValue);

                txtValue.Text = iValue.ToString();

                btnSave.Enabled = true;
            }
            else
            {
                txtValue.Text = "";
                btnSave.Enabled = false;
            }
            
        }

        /// <summary>
        /// 写入文件
        /// </summary>
        /// <param name="iValue"></param>
        /// <param name="msg"></param>
        private void WriteFile(out string msg)
        {
            msg = string.Empty;
            try
            {              
                FileStream NewFile = new FileStream(strSaveFilePath, FileMode.Create, FileAccess.Write);
                StreamWriter NewStream = new StreamWriter(NewFile);
                NewStream.WriteLine(iValue.ToString());
                NewStream.Flush();
                NewStream.Close();

                iValue = 0;

                msg += "写入文件成功";
            }
            catch (IOException)
            {
                msg += "写入文件失败";
            }
        }

        /// <summary>
        /// 计算出想要的值
        /// </summary>
        /// <param name="ds"></param>
        private void ComputeValue(DataSet ds,out double iValue)
        {
            Regex regex = new Regex("^[+-]?\\d+(\\.\\d+)?$");

            iValue = 0;

            double iCountValue = 0;
            double iTheta = 0;
            double iGainLin = 0;
            double iCount = 0;
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                string dd = row[1].ToString();
                string dx = row[2].ToString();
                if (row[1] != null && row[1].ToString() != "Theta" && regex.IsMatch(row[1].ToString())
                    && row[2] != null && row[2].ToString() != "Gain . Lin" && regex.IsMatch(row[2].ToString()))
                {

                    iTheta = Math.Sign(double.Parse(row[1].ToString()));

                    iGainLin = double.Parse(row[2].ToString());

                    iCountValue += Math.Abs(iTheta * iGainLin);

                    iCount++;
                }
            }

            iValue = 10* Math.Log10(iCountValue * Math.PI/iCount/2);
        }


        /// <summary>
        /// 从Excel中获取数据.(无须指定表名,返回的DataSet包含此Excel中所有的表).
        /// </summary>
        /// <param name="filePath">Excel物理路径.</param>
        /// <returns>DataSet:Excel中表的记录集合.</returns>
        private DataSet ReadExcle(string filePath, out string msg)
        {
            string strSql = string.Empty;
            msg = string.Empty;
            DataSet ds = new DataSet();
            DataTable dt = null;
            OleDbDataAdapter adapter = null;
            string strTableName = string.Empty;
            if (filePath != string.Empty)
            {
                try
                {
                    //判断是否为xls文件.
                    if (!filePath.Substring(filePath.Length - 3, 3).Equals("xls"))
                    {
                        throw new Exception("文件格式不正确");
                    }

                    string strConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0";   

                    OleDbConnection conn = new OleDbConnection(strConnectionString);

                    conn.Open();
                    //获取Excel文件Schema信息.
                    DataTable dtschema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    if (dtschema != null && dtschema.Rows.Count > 0)
                    {
                        //遍历Excel中所有的表
                        foreach (DataRow row in dtschema.Rows)
                        {
                            strTableName = row[2].ToString().Trim(new char[] { '\'' });
                            if (IsTable(strTableName))
                            {
                                dt = new DataTable(strTableName.Replace('$', ' '));
                                strSql = string.Format("select * from [{0}]", strTableName);
                                adapter = new OleDbDataAdapter(strSql, conn);
                                adapter.Fill(dt);
                                ds.Tables.Add(dt);
                            }
                        }
                    }
                    conn.Close();
                }
                catch (Exception Ex)
                {
                    msg += Ex.Message + "$";
                }
            }
            else
            {
                msg += "没有这个文件";
            }
            return ds;

        }
        /// <summary>
        /// 判定是否为Excel中包含记录的表.(排除掉打印区域等表格.e.g xx$print Area)
        /// </summary>
        /// <param name="tableName">Excel中获取到的表名.</param>
        /// <returns></returns>
        private bool IsTable(string tableName)
        {
            bool blIsTable = false;
            if (tableName != string.Empty)
            {
                int nIndex = tableName.LastIndexOf("$");
                if (nIndex != -1 && tableName.Length - 1 == nIndex)
                {
                    blIsTable = true;
                }
            }
            return blIsTable;
        }

 

    }
}
--------------------编程问答-------------------- 0分贴,还这么麻烦的事情,谁干那 --------------------编程问答-------------------- 我想给分的,但是发了以后不知道怎么追加给分
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,