C# winform 导入导出excel

//引用命名空间   using Microsoft.Office.Interop.Excel;
//DataGridView 导出到Excel
        public static voidSaveAs(DataGridView gridView)
        {
      //导出到execl   
            try
            {
               SaveFileDialog saveFileDialog = new SaveFileDialog();
               saveFileDialog.Filter = "导出Excel(*.xls)|*.xls";
               saveFileDialog.FilterIndex = 0;
               saveFileDialog.RestoreDirectory = true;
               saveFileDialog.CreatePrompt = true;
               saveFileDialog.Title = "导出文件保存路径";
               saveFileDialog.ShowDialog();
               string strName = saveFileDialog.FileName;
               if (strName.Length != 0)
               {
                 toolStripProgressBar1.Visible = true;
                   System.Reflection.Missing miss = System.Reflection.Missing.Value;
                   Microsoft.Office.Interop.Excel.ApplicationClass excel = newMicrosoft.Office.Interop.Excel.ApplicationClass();
                   excel.Application.Workbooks.Add(true); ;
                   excel.Visible = false;//若是true,则在导出的时候会显示EXcel界面。
                   if (excel == null)
                   {
                       MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                       return;
                   }
                   Microsoft.Office.Interop.Excel.Workbooks books =(Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;
                   Microsoft.Office.Interop.Excel.Workbook book =(Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss));
                   Microsoft.Office.Interop.Excel.Worksheet sheet =(Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
                   sheet.Name = "test";

                   int m = 0, n = 0;
    //生成列名称   这里i是从1开始的 因为我第0列是个隐藏列ID  没必要写进去
                   for (int i = 1; i < gridView.ColumnCount; i++)
                   {

                       excel.Cells[1, i] = gridView.Columns[i].HeaderText.ToString();
               
                   }
                 
                   //填充数据
                   for (int i = 0; i < gridView.RowCount; i++)
                   {

   //j也是从1开始  原因如上  每个人需求不一样
                       for (int j = 1; j < gridView.ColumnCount; j++)
                       {
                         
                               if (gridView[j, i].Value.GetType() == typeof(string))
                               {
                                   if (i < 9&&j==1)
                                   {
                                       string s="0"+gridView[j, i].Value.ToString().Trim();
                                       excel.Cells[i + 2, j] = "'" +s;
                                       continue;
                                   }
                                          excel.Cells[i + 2, j] = "'" + gridView[j,i].Value.ToString();               
                             
              
                               }
                               else
                               {
                                   excel.Cells[i + 2, j ] = gridView[j, i].Value.ToString();
                               }
                         

                         
                       }
                       toolStripProgressBar1.Value += 100 / gridView.RowCount;
                   }
               
                   sheet.SaveAs(strName, miss, miss, miss, miss, miss,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss,miss);
                   book.Close(false, miss, miss);
                   books.Close();
                   excel.Quit();
                   System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
                   System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
                   System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
                   System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
                  
                   GC.Collect();
                   MessageBox.Show("数据已经成功导出!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                   toolStripProgressBar1.Value = 0;
                  

                   System.Diagnostics.Process.Start(strName);
               }
            }

           catch (Exception ex)
            {
               MessageBox.Show(ex.Message, "错误提示");
            }

       }

//获得当前你选择的Excel Sheet的所有名字

    public static string[] GetExcelSheetNames(string filePath)
        {

           Excel.ApplicationClass excelApp = new Excel.ApplicationClass();
           Excel.Workbooks wbs = excelApp.Workbooks;
           Excel.Workbook wb = wbs.Open(filePath, 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);
            intcount=wb.Worksheets.Count;
           string[]names=new string[count];
            for (int i =1; i <= count; i++)
            {
               names[i-1]=((Excel.Worksheet)wb.Worksheets[i]).Name;
            }
            returnnames;
        }

//Excel导入到数据库Access中

//filePath  你的Excel文件路径

  public static bool Import(string filePath)
        {
            try
            {

                   //Excel就好比一个数据源一般使用

               string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "DataSource=" + filePath + ";" + "Extended Properties=Excel8.0;";

               OleDbConnection con = new OleDbConnection(strConn);
               con.Open();
               string[] names = GetExcelSheetNames(filePath);
               if (names.Length > 0)
               {
                   foreach (string name in names)
                   {
                       OleDbCommand cmd = con.CreateCommand();
                       cmd.CommandText = string.Format(" select * from [{0}$]", name);//[sheetName$]要如此格式
                       OleDbDataReader odr = cmd.ExecuteReader();

                       while (odr.Read())
                       {

                           if (odr[0].ToString()== "序号")//过滤列头  按你的实际Excel文件
                               continue;
                           Add(odr[1].ToString(), odr[2].ToString(), odr[3].ToString());//数据库添加操作

                       }
                       odr.Close();
                   }
               }
               return true;
            }
            catch(Exception)
            {
               return false;
            }
            
        }


我用了你的这些代码 但是有两个问题要问下 具体情况如下:
public static bool Import(string filePath)
{
try
{

//Excel就好比一个数据源一般使用

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "DataSource=" + filePath + ";" + "Extended Properties=Excel8.0;";

OleDbConnection con = new OleDbConnection(strConn);
con.Open();
string[] names = ExportToExcel.GetExcelSheetNames(filePath);
if (names.Length > 0)
{
foreach (string name in names)
{
OleDbCommand cmd = con.CreateCommand();
cmd.CommandText = string.Format(" select * from [{0}$]",name);//[sheetName$]要如此格式
OleDbDataReader odr = cmd.ExecuteReader();

while (odr.Read())
{

if (odr[0].ToString() == "序号")//过滤列头 按你的实际Excel文件
continue;
Add(odr[1].ToString(), odr[2].ToString(), odr[3].ToString());//数据库添加操作

}
odr.Close();
}
}
return true;
}
catch (Exception)
{
return false;
}

}


这个类中有提示 
当前上下文中不存在“ExportToExcel”
当前上下文中不存在“Add”


有时间的时候能帮我看看问题出在什么地方吗?谢谢了啊!!

@caopan
ExportToExcel是自定义类和Add方法是自定义的方法 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值