C#Excel DataTableReader对于当前DataTable无效';第1页和第27页;

C#Excel DataTableReader对于当前DataTable无效';第1页和第27页;,c#,asp.net-mvc,excel,C#,Asp.net Mvc,Excel,这似乎对我没有帮助 我想做的是读取一个excel.xlsx文件内容来替换一些单元格的值,并将新的文件内容返回给客户端。但原始文件应保持原样。我不想将新文件保存到系统中-这不是一个解决方案 代码如下: string excelFilePath=this.Server.MapPath(“~/App\u Data/Test.xlsx”); var fileStream=System.IO.File.Open(excelFilePath、System.IO.FileMode.Open、System.IO

这似乎对我没有帮助

我想做的是读取一个excel.xlsx文件内容来替换一些单元格的值,并将新的文件内容返回给客户端。但原始文件应保持原样。我不想将新文件保存到系统中-这不是一个解决方案

代码如下:

string excelFilePath=this.Server.MapPath(“~/App\u Data/Test.xlsx”);
var fileStream=System.IO.File.Open(excelFilePath、System.IO.FileMode.Open、System.IO.FileAccess.Read、System.IO.FileShare.ReadWrite);
Excel.IExcelDataReader exReder=Excel.ExcelReaderFactory.CreateOpenXmlReader(文件流);
System.Data.DataSet数据集=null;
使用(exReder)
{
dataSet=exReder.AsDataSet();
}
如果(数据集==null)
{
抛出新ArgumentNullException(“无法创建数据集”);
}
dataSet.Tables[0]。行[0]。ItemArray=new[]{“Microsoft”、“Test”、“ASP.NET”};
bool hasChanges=dataSet.hasChanges();//真的
AcceptChanges();
bool hasChanges2=dataSet.HasChanges();//假的
var dataReader=dataSet.CreateDataReader(dataSet.Tables[0]);
TextReader TextReader=dataReader.GetTextReader(1);//1是有序的,无论我通过什么,它都会引发异常
byte[]results=System.Text.Encoding.UTF8.GetBytes(textReader.ReadToEnd());
返回这个.File(结果,System.Net.Mime.MediaTypeNames.Application.Octet);
我正在使用软件包


dataReader.GetTextReader(1)始终引发异常。如何制作这个文本阅读器?或者只获取更改后的字节?

考虑使用Microsoft提供的Excel.Interop.net库。它们是为执行这些功能而设计的。这里有一个建议:

考虑使用Microsoft提供的Excel.Interop.net库。它们是为执行这些功能而设计的。这里有一个关于这个的建议:

目前我找到了一个解决方法

目前我找到了一个解决方法

已尝试使用Excel.Interop。当创建如下实例时:
Application xlApp=new Application()
会引发异常:
检索CLSID为{00024500-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80070005访问被拒绝。(HRESULT的例外:0x80070005(E_ACCESSDENIED))。
这是asp.net项目的一部分吗?是的,这是MVC。我发现要使用Excel.Interop,我必须在Windows配置中从IIS添加对IUSR的权限。很抱歉,我在此处出错,我在其他地方读到,在IIS上使用Interop是个坏消息,与您发布的错误完全一致。您是否可以调试并在该行上设置断点,并检查是否已填充dataReader?已尝试使用Excel.Interop。当创建如下实例时:
Application xlApp=new Application()
会引发异常:
检索CLSID为{00024500-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80070005访问被拒绝。(HRESULT的例外:0x80070005(E_ACCESSDENIED))。
这是asp.net项目的一部分吗?是的,这是MVC。我发现要使用Excel.Interop,我必须在Windows配置中从IIS添加对IUSR的权限。很抱歉,我在此处出错,我在其他地方读到,在IIS上使用Interop是个坏消息,与您发布的错误完全一致。您能否调试并在该行上设置断点,并检查dataReader是否已填充?