C#Excel DataTableReader对当前DataTable“Sheet1”无效

这个线程似乎没有帮助我。

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

这里是代码:

string excelFilePath = this.Server.MapPath("~/App_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(fileStream); System.Data.DataSet dataSet = null; using (exReder) { dataSet = exReder.AsDataSet(); } if (dataSet == null) { throw new ArgumentNullException("Cannot Make Data Set"); } dataSet.Tables[0].Rows[0].ItemArray = new[] { "Microsoft", "Test", "ASP.NET" }; bool hasChanges = dataSet.HasChanges(); // true dataSet.AcceptChanges(); bool hasChanges2 = dataSet.HasChanges(); // false var dataReader = dataSet.CreateDataReader(dataSet.Tables[0]); TextReader textReader = dataReader.GetTextReader(1); // 1 is ordinal no matter what I pass it throws an exception byte[] results = System.Text.Encoding.UTF8.GetBytes(textReader.ReadToEnd()); return this.File(results, System.Net.Mime.MediaTypeNames.Application.Octet); 

我正在使用http://exceldatareader.codeplex.com/包

dataReader.GetTextReader(1); 总是抛出一个exception。 如何使这个文本阅读器? 或者只是得到更改后的字节?

考虑使用Microsoft提供的Excel.Interop .net库。 它们本身就是为了执行这些function而devise的。 这里有一个dotnetperls博客 :