想通过StreamWriter向a.xls文件添加多行数据(之前用Excel对象写数据,但速度太慢.).
Excel限制了每个sheet最多有65536行数据,而我要添加进去的数据远超过这个数,所以想通过在一个xls文件中建立多个sheet来实现.
假如a.xls中有两个sheet(sheet1,sheet2).
问题1:如何选择不同的sheet,以便用StreamWriter能对不同的sheet写数据.
比如,当我
- C# code
StreamWriter sw = new StreamWriter(@"c:\a.xls");sw.WriteLine("testText1/ttestText2");
问题2:当我
- C# code
StreamWriter sw = new StreamWriter(@"c:\a.xls");sw.WriteLine("testText1/ttestText2");sw.Flush();sw.close();
而用
- C# code
StreamWriter sw = File.AppendText(@"c:\a.xls);sw.WriterLine("testText1/ttestText2");sw.Flush();sw.close();(
参与者有分,现行谢过!
------解决方案--------------------------------------------------------
明显用streamwriter写的时候把之前存在于excel文档中的数据都抹掉了
所以sheet的区分就没有了
用File.AppendText写的时候,是在excel文档中仅存的两个sheet之外的地方写入数据了,所以没有显示
操作excel页可以用oledb
方法:
- C# code
OleDbConnection objConn = null;DataSet data = new DataSet();try{string strConn = @"Provider=Microsoft.ACE.OleDb.12.0;Data Source=c:"待发工资.xlsx;Extended Properties='Excel 12.0;HDR=YES'";//IMEX=1为只读//"Provider=Microsoft.Jet.OleDb.4.0;data source=c:"待发工资.xlsx;Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"""; objConn = new OleDbConnection(strConn);objConn.Open();//System .Data . DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);//int SheetIndex = 0;//string tableName = schemaTable.Rows[SheetIndex][2].ToString().Trim();string strSql = "Select * From [Sheet1$]";OleDbCommand objCmd = new OleDbCommand(strSql, objConn);OleDbDataAdapter sqlada = new OleDbDataAdapter();sqlada.SelectCommand = objCmd;sqlada.Fill(data);string str = "";for (int i = 0; i < data.Tables[0].Rows[0].ItemArray.Length; i++){str += data.Tables[0].Rows[0].ItemArray[i].ToString() + ".";}MessageBox.Show(str);objConn.Close();}catch (Exception ex){objConn.Close();Console.WriteLine(ex.Message.ToString());}
------解决方案--------------------------------------------------------
StreamWriter来用写文件的方式生成excel其实就是在写csv文件,而只是把文件名存成了xls罢了
一个csv文件能有多个sheet吗?
不能
所以你的问题估计也是不能