VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • 实战练习四:EXCEL操作 (从EXCEL导入数据 / 将DataGridView的数据导出到EXCEL)

实战练习四:EXCEL操作
(从EXCEL导入数据 / 将DataGridView的数据导出到EXCEL)
Test.xls文件的内容如下:

 
 

C#程序界面:

“从EXCEL导入”按钮源码:
        private void btn_Import_Click(object sender, EventArgs e)
        {
 
            string strConn;
 
            // IMEX=1 可把混合型作为文本型读取,避免null值
 
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.xls;Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
 
            OleDbConnection OleConn = new OleDbConnection(strConn);
 
            OleConn.Open();
 
            String sql = "SELECT * FROM  [Sheet1$]"; // 可更改 Sheet 名称   
 
            OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
 
            DataSet ds = new DataSet();
 
            OleDaExcel.Fill(ds, "MyTable");
 
            dgv.DataSource = ds;
 
            dgv.DataMember = "MyTable";
 
            OleConn.Close();
 
        }

“导出到EXCEL”按钮源码:
       private void button3_Click(object sender, EventArgs e)
        {
 
            //申明保存对话框  
            SaveFileDialog dlg = new SaveFileDialog();
            //默然文件后缀
            dlg.DefaultExt = "xls ";
            //文件后缀列表  
            dlg.Filter = "EXCEL文件(*.XLS)|*.xls ";
            //默然路径是系统当前路径  
            dlg.InitialDirectory = Directory.GetCurrentDirectory();
            //打开保存对话框  
            if (dlg.ShowDialog() == DialogResult.Cancel) return;
            //返回文件路径  
            string fileNameString = dlg.FileName;
            //验证strFileName是否为空或值无效  
            if (fileNameString.Trim() == " ") return;
            //定义表格内数据的行数和列数  
            int rowscount = dgv.Rows.Count;
            int colscount = dgv.Columns.Count;
            //行数必须大于0  
            if ( rowscount <= 0 )
            {
                MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
 
            //列数必须大于0  
            if (colscount <= 0)
            {
                MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
 
            //行数不可以大于65536  
            if (rowscount > 65536)
            {
                MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
 
            //列数不可以大于255  
            if (colscount > 255)
            {
                MessageBox.Show("数据记录行数太多,不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
 
            //验证以fileNameString命名的文件是否存在,如果存在删除它  
            FileInfo file = new FileInfo(fileNameString);
            if (file.Exists)
            {
                try
                {
                    file.Delete();
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message, "删除失败 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
            }
            //创建空EXCEL对象
            Microsoft.Office.Interop.Excel.Application objExcel = null;
            Microsoft.Office.Interop.Excel.Workbook objWorkbook = null;
            Microsoft.Office.Interop.Excel.Worksheet objSheet = null;
            try
            {
                //申明对象  
                objExcel = new Microsoft.Office.Interop.Excel.Application();
                objWorkbook = objExcel.Workbooks.Add(Missing.Value);
                objSheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet;//强制类型转换
                //设置EXCEL不可见(后台运行)  
                objExcel.Visible = false;
 
                //向Excel中写入表格的表头  
                int displayColumnsCount = 1;
                for (int i = 0; i <= dgv.ColumnCount - 1; i++)
                {
                    if (dgv.Columns[i].Visible == true)
                    {
                        objExcel.Cells[1, displayColumnsCount] = dgv.Columns[i].HeaderText.Trim();
                        displayColumnsCount++;
                    }
                }
 
                //向Excel中逐行逐列写入表格中的数据  
                for (int row = 0; row <= dgv.RowCount - 1; row++)
                {
                    displayColumnsCount = 1;
                    for (int col = 0; col < colscount; col++)
                    {
                        if (dgv.Columns[col].Visible == true)
                        {
                            try
                            {
                                objExcel.Cells[row + 2, displayColumnsCount] = dgv.Rows[row].Cells[col].Value.ToString().Trim();
                                displayColumnsCount++;
                            }
                            catch (Exception)
                            {
 
                            }
 
                        }
                    }
                }
                //保存文件  
                objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                        Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value,
                        Missing.Value, Missing.Value);
            }
            catch (Exception error)
            {
                MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            finally
            {
                //关闭Excel应用  
                if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value);
                if (objExcel.Workbooks != null) objExcel.Workbooks.Close();
                if (objExcel != null) objExcel.Quit();
 
                objSheet = null;
                objWorkbook = null;
                objExcel = null;
            }
            MessageBox.Show(fileNameString + "\n\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
        }


相关教程