2010-02-22 31 views

回答

1

可以绕过Excel自动化和使用的OleDbConnection这样

connectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;'"; 
... 

connectionString = string.Format(connectionString, fileName); 
OleDbConnection conn = new OleDbConnection(connectionString) 
............. 
// You can create table or insert value using SQL statement 
// Create your OleDbCommand and execute it. 
............ 
conn.Close(); 
1

如果数据要由客户端提交,则将其发布到服务器。一旦它在服务器上,创建一个StringBuilder并将数据转换为一个大字符串,在每行之后使用逗号分隔列和换行符。然后返回一个新的FileResult:

在你的控制器,在创建了StringBuilder的SB后:

MemoryStream ms = new MemoryStream(); 
StreamWriter writer = new StreamWriter(ms, Encoding.UTF8); 
writer.Write(sb.ToString()); 
writer.Flush(); 
ms.Position = 0; 

return File(ms, "application/vnd.ms-excel", "myfile.csv"); 

导入Excel中的数据则是另一回事。我没有那么做,所以希望别人能够提供一些见解。

1

要从excel导入,请照常上传文件。 然后通过参考Microsoft.Office.Interop.Excel.dll(从办公室11),可以使用excel api遍历工作表并提取数据。

1

我的建议是使用LocalReport来呈现结果。你只需要用你想要的布局创建一个rdlc文件(在项目中添加一个新报告)。然后你必须传递你想绑定的数据并调用Render方法(你可以返回excel和pdf)。老实说,我手边没有任何示例代码,但如果你有一点点谷歌,你一定会知道如何做到这一点。 祝你好运。