首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

关于C#导入导出EXCEL表格的有关问题

2012-10-18 
关于C#导入导出EXCEL表格的问题!我用 这两个方法进行 c#的excel表格的 导入导出为什么我导出的文件都导入

关于C#导入导出EXCEL表格的问题!
我用 这两个方法进行 c#的excel表格的 导入导出
为什么 我导出的文件 都导入不进来 报的错误是 格式不对
有没有办法 解决这个问题??
我的 导入导出代码如下:


 public IList<AddressList> excelImport(String path) //导入方法
  {
  IList<AddressList> allist = new List<AddressList>();
  // string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";" + "Extended Properties=Excel 8.0;";
  string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path+";Extended Properties='Excel 8.0;HDR=NO'";
  OleDbConnection conn = new OleDbConnection(strConn);
  string strExcel = "";
  strExcel = "select * from [sheet1$]";
  OleDbCommand cmd = new OleDbCommand(strExcel, conn);
  try
  {
  conn.Open();
  OleDbDataReader reader = cmd.ExecuteReader();
   
  while (reader.Read())
  {
   
  String id = reader[0].ToString().Trim();
  string name = reader[1].ToString().Trim();
  string moblenumber = reader[2].ToString().Trim();
  if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(name) &&! string.IsNullOrEmpty(moblenumber))
  {
  AddressList al = new AddressList();
  al.Id = Convert.ToInt32(id);
  al.Name = name;
  al.MobleNumber = moblenumber;
  allist.Add(al);
  }
  }
  //AddressList al1 = new AddressList();
  //al1.Id = Convert.ToInt32(reader.GetName(0));
  //al1.Name = reader.GetName(1);
  //al1.MobleNumber = reader.GetName(2);
  //allist.Add(al1);
  //MessageBox.Show(reader.GetName(0));
  //MessageBox.Show(reader.GetName(1));
  //MessageBox.Show(reader.GetName(2));
  return allist;
  }
  catch(Exception e)
  {
  e.ToString();

  }
  finally {

  conn.Close();
  }

  return null;
   
   
  }
   

   
  //导出 
  public bool txtOut(String path,IList<string> list)
  {
  FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
  StreamWriter m_streamWriter = new StreamWriter(fs);
  m_streamWriter.Flush();
  // 使用StreamWriter来往文件中写入内容
  m_streamWriter.BaseStream.Seek(0, SeekOrigin.Begin);
  // 把richTextBox1中的内容写入文件
  foreach(string str in list)
  m_streamWriter.Write(str);
  //关闭此文件
  m_streamWriter.Flush();
  m_streamWriter.Close();

  return true;
   
  }
  public bool excelOut(String path,IList<AddressList> list)
  {
  Excel.Application excel = new Excel.Application();
   


  Range range = null;// 创建一个空的单元格对象 
  Worksheet sheet = null;
  if (excel == null)
  {
  return false;
  }
  excel.Visible = false;// 不显示 Excel 文件,如果为 true 则显示 Excel 文件 
  excel.Workbooks.Add(Missing.Value);// 添加工作簿 
  sheet = (Worksheet)excel.ActiveSheet;// 获取当前工作表 

   

  for (int i=0;i<list.Count;i++)
  {
  range = sheet.get_Range("A" + (i + 1), Missing.Value);
  range.Value2 = list[i].Id.ToString();
  range = sheet.get_Range("B" + (i + 1), Missing.Value);
  range.Value2 = list[i].Name;
  range = sheet.get_Range("c" + (i + 1), Missing.Value);
  range.Value2 = list[i].MobleNumber;
   
   
  }
  sheet.SaveAs(path, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  excel.ActiveWorkbook.Close(false, null, null); // 关闭 Excel 文件且不保存 
  excel.Quit(); // 退出 Excel 
  System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
  System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
  System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
  GC.Collect();

  return true;

  }

[解决办法]
你采用了流导出Excel,好处是速度快,文件小,没有用到Excel组件;缺点是:非真正的EXCEL标准格式,所以导入不进去。
[解决办法]
建议这样处理
导出:使用xml或者html存为.xls
导入:1 Excel的Com打开要导入的文件,另存为xls格式的到一个临时目录(这样可以可以转换为标准格式)
2 使用oledb读取另存的那个文件

热点排行