paul_vin Ответов: 0

У меня проблема не удалось найти файл '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[^];

0 Ответов