直接对Excel读写操作

1.添加office的引用

Microsoft.Office.Interop.Excel

2.读excel文件

 //加载excel,读取excel中的数据
        /// <summary>
        /// 
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="leixing">文件所选择的类型</param>
        /// <returns></returns>
        public DataTable ReadExcel(string path, string leixing)
        {
            DataTable dt = new DataTable();
            try
            {
                string strconn;
                strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
                OleDbConnection OleConn = new OleDbConnection(strconn);
                string sql = "";
                if (leixing == "降水成果表")
                {
                    sql = "select * from [Sheet1$A2:J24]";//读取excel操作
                }
                if (leixing == "降水成果_szy")
                {
                    sql = "select * from [Sheet1$]";//读取excel操作
                }
                if (leixing == "降水成果_xz")
                {
                    sql = "select * from [Sheet1$]";//读取excel操作
                }


                OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
                DataSet OleDsExcle = new DataSet();
                OleDaExcel.Fill(OleDsExcle, "Sheet1");
                OleConn.Close();
                dt = OleDsExcle.Tables[0];


            }
            catch (Exception err)
            {
                MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message, "提示信息",
            MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
            }

            return dt;
        }

3.写excel文件

 /// <summary>
        /// 将数据写入excel中的特定单元格中
        /// </summary>
        /// <param name="path"></param>
        /// <param name="leixing"></param>
        /// <returns></returns>
        public void WriteExcel(string path, string leixing, DataTable tt)
        {
            Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook wbook = app.Workbooks.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);


            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)wbook.Worksheets[1];






            if (leixing == "降水成果表")
            {
                FileInfo fi = new FileInfo(path);
                if (fi.Exists)
                {


                    //Microsoft.Office.Interop.Excel.Range rng = worksheet.get_Range("F4", Missing.Value);
                    //rng.Value2 = "10";


                    for (int i = 2; i < tt.Rows.Count; i++)
                    {
                        //
                        for (int j = 5; j < tt.Columns.Count; j++)
                        {
                            //Microsoft.Office.Interop.Excel.Range rng = worksheet.get_Range(worksheet.Cells[i+1][j], Missing.Value);
                            //rng.Value2 = tt.Rows[i][j].ToString();


                            string data = tt.Rows[i][j].ToString();
                            worksheet.Cells[j+1][i+2] = data;                            


                        }
                    }                   


                    worksheet.SaveAs(path, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                    app.ActiveWorkbook.Close(false, null, null); // 关闭 Excel 文件且不保存
                    app.Quit();//退出excel
                }


                //Microsoft.Office.Interop.Excel.Range rng = worksheet.get_Range("F4", Missing.Value);
                //rng.Value2 = "10";              


            }
            if (leixing == "降水成果_szy")
            {
                 FileInfo fi = new FileInfo(path);
                 if (fi.Exists)
                 {
                     for (int i = 2; i < tt.Rows.Count; i++)
                     {
                         //
                         for (int j = 4; j < tt.Columns.Count; j++)
                         {
                             //Microsoft.Office.Interop.Excel.Range rng = worksheet.get_Range(worksheet.Cells[i+1][j], Missing.Value);
                             //rng.Value2 = tt.Rows[i][j].ToString();


                             string data = tt.Rows[i][j].ToString();
                             worksheet.Cells[j + 1][i + 2] = data;
                         }
                     }
                     worksheet.SaveAs(path, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                     app.ActiveWorkbook.Close(false, null, null); // 关闭 Excel 文件且不保存
                     app.Quit();//退出excel
                 }
            }
            if (leixing == "降水成果_xz")
            {
                FileInfo fi = new FileInfo(path);
                if (fi.Exists)
                {
                    for (int i = 2; i < tt.Rows.Count; i++)
                    {
                        //
                        for (int j = 2; j < tt.Columns.Count; j++)
                        {
                            //Microsoft.Office.Interop.Excel.Range rng = worksheet.get_Range(worksheet.Cells[i+1][j], Missing.Value);
                            //rng.Value2 = tt.Rows[i][j].ToString();


                            string data = tt.Rows[i][j].ToString();
                            worksheet.Cells[j + 1][i + 2] = data;


                        }
                    }
                    worksheet.SaveAs(path, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                    app.ActiveWorkbook.Close(false, null, null); // 关闭 Excel 文件且不保存
                    app.Quit();//退出excel
                }
            }
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值