У меня проблема не удалось найти файл 'C:\program файлы (x86)\IIS express\product.xml".
Я хочу конвертировать xml-файлы в Excel с помощью asp .net c#, поэтому я читаю файл как
xmlFile = XmlReader.Create("Product.xml", new XmlReaderSettings());
но это дает ошибку
{"Could not find file 'C:\\Program Files (x86)\\IIS Express\\Product.xml'.":"C:\\Program Files (x86)\\IIS Express\\Product.xml"}
Мое досье находится в
C:\Program Files (x86)\IIS Express
также он дает ошибку в следующем месте
releaseObject(xlApp); releaseObject(xlWorkBook); releaseObject(xlWorkSheet);
не существует в текущем контексте
Что я уже пробовал:
при нажатии кнопки у меня есть следующий код для преобразования excel
protected void Button1_Click(object sender, EventArgs e) { Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; DataSet ds = new DataSet(); XmlReader xmlFile; int i = 0; int j = 0; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xmlFile = XmlReader.Create("Product.xml", new XmlReaderSettings()); ds.ReadXml(xmlFile); for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++) { for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++) { xlWorkSheet.Cells[i + 1, j + 1] = ds.Tables[0].Rows[i].ItemArray[j].ToString(); } } xlWorkBook.SaveAs("D\\filename.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlApp); releaseObject(xlWorkBook); releaseObject(xlWorkSheet); Response.Write("File has saved in D drive"); }
кроме того, я хочу знать, могу ли я дать другой путь для product.xml то есть могу ли я поставить его на другой диск и дать этот путь как?
xmlFile = XmlReader.Create("Product.xml", new XmlReaderSettings());
Dylvh
Попробуйте поместить ваш файл в другую папку и посмотреть, поможет ли это. Путь к папке Program files является "защищенным", и вам нужно будет запустить браузер от имени администратора, чтобы иметь возможность получить доступ к файлам из этого местоположения.
paul_vin
предположим, я поставил его на следующий путь
Д:\
тогда в следующем коде что должно быть помещено вместо "Product.xml"
xmlFile = XmlReader.Создать("Product.xml", новые XmlReaderSettings());
когда я использовал как
использование (XmlReader reader = XmlReader.Создать(@"D:\VSTO_Vinayak\Product.xml"))
ds.ReadXml(читатель);
это дает исключение как {"не удалось найти файл 'D:\\VSTO_Vinayak\\Product.xml".:"D:\\VSTO_Vinayak\\Product.xml"}
Dylvh
Обычно это будет xmlFile = XmlReader.Создать("D:\Product.xml" новые свойства xmlreadersettings());. Но вы делаете это в asp.net, так что вы, возможно, потребуется, чтобы прочитать его по-разному, если это не сработает.
Dylvh
Я не ан asp.net эксперт, но, возможно, может направить вас в нужном направлении. Поиск в Google для "asp.net чтение файла с диска". Надеюсь, это поможет.
ZurdoDev
Какая бы учетная запись ни была запущена в вашем пуле приложений, она, скорее всего, не имеет прав на чтение диска там.
Richard Deeming
Вы не можете использовать Office Interop из ASP.NET:
Рекомендации по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и/или взаимоблокировку при запуске Office в этой среде.
Есть несколько альтернатив, которые делать работа:
* EPPlus[^];
* ClosedXML[^];
* SDK OpenXML[^];