2016-09-14 2 views
0

Был недавний Microsoft patch, который разбил html -> xls exports (с тех пор был fixed).Сохранение таблицы HTML в файле «file.html» для excel

Наш текущий процесс экспорта, в основном, выводит то, что находится внутри ретранслятора в виде строки HTML, и сохраняет его как «.xls». Это, в свою очередь, вызывает предупреждение «файл в другом формате ...» при открытии файла, и до момента разрыва это было нормально, так как вы могли подтвердить это предупреждение и все еще открыть документ.

Патч, который исправил эту функциональность, которая была введена, но, несмотря на то, что мне поручено взглянуть на способ вывести уровень исправления для клиентов из уравнения и поместить его на уровень патча нашего сервера. Фактически, запрос состоит в том, чтобы воссоздать весь экспорт, но я надеюсь, что есть более простой способ, поскольку текущий является очень общим и обрабатывает. Так или иначе ...

test.html:

<html> 
    <head> 
     <title>Test Title</title> 
    </head> 
    <body> 
     <table> 
      <thead> 
       <tr> 
        <td>Test Row 1</td> 
        <td>Test Row 2</td> 
       </tr> 
      </thead> 
      <tbody> 
       <tr><td>0</td><td>Test 0</td></tr> 
       <tr><td>1</td><td>Test 1</td></tr> 
       <tr><td>2</td><td>Test 2</td></tr> 
       <tr><td>3</td><td>Test 3</td></tr> 
       <tr><td>4</td><td>Test 4</td></tr> 
       <tr><td>5</td><td>Test 5</td></tr> 
       <tr><td>6</td><td>Test 6</td></tr> 
       <tr><td>7</td><td>Test 7</td></tr> 
       <tr><td>8</td><td>Test 8</td></tr> 
       <tr><td>9</td><td>Test 9</td></tr> 
       <tr><td>10</td><td>Test 10</td></tr> 
       <tr><td>11</td><td>Test 11</td></tr> 
       <tr><td>12</td><td>Test 12</td></tr> 
       <tr><td>13</td><td>Test 13</td></tr> 
       <tr><td>14</td><td>Test 14</td></tr> 
       <tr><td>15</td><td>Test 15</td></tr> 
       <tr><td>16</td><td>Test 16</td></tr> 
       <tr><td>17</td><td>Test 17</td></tr> 
       <tr><td>18</td><td>Test 18</td></tr> 
       <tr><td>19</td><td>Test 19</td></tr> 
       <tr><td>20</td><td>Test 20</td></tr> 
       <tr><td>21</td><td>Test 21</td></tr> 
       <tr><td>22</td><td>Test 22</td></tr> 
       <tr><td>23</td><td>Test 23</td></tr> 
       <tr><td>24</td><td>Test 24</td></tr> 
      </tbody> 
     </table> 
    </body> 
</html> 

, который выглядит, как это открыто в первенствует:

enter image description here

Я (попытка) использовать первенствовать Interop, чтобы открыть файл и сохранить его как расширение xls/xlsx (надеясь, что он будет похож на руководство «сохранить как» от excel), после чего предупреждение о другом формате документа исчезнет (надеюсь).

я бы подумал, что это будет так просто, как это:

string htmlFilePathAndName = @"C:/test.html"; 
string newXlsxFilePathAndName = @"C:/test.xlsx"; 

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 
Microsoft.Office.Interop.Excel.Workbook xls; 
xls = excel.Workbooks.Open(htmlFilePathAndName); 
xls.SaveAs(newXlsxFilePathAndName, XlFileFormat.xlOpenXMLWorkbook); // exception 

, но я получаю исключение:

Необработанное исключение: System.Runtime.InteropServices.COMException: Microsoft Exce Я не могу получить доступ к файлу 'C: // 7A133BE0'. Существует несколько возможных причин:

Имя файла или путь к нему не существует.

Файл используется другой программой.

Книга, которую вы пытаетесь сохранить, имеет то же имя, что и открытая рабочая область ook.

в Microsoft.Office.Interop.Excel._Workbook.SaveAs (объект файла, объект беспроводной leFormat, объект Пароль, объект WriteResPassword, объект ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, объект Конфликтные, О AddToMru ▪ Таблица, объект TextCodepage, объект TextVisualLayout, объект Local)

Я не уверен, что «7A133BE0» приходит, но я предполагаю, что это временный рабочий файл, как значение изменяется с каждым попытки запуска.

Есть ли другой способ сделать то, что я пытаюсь сделать, программным способом? Я бы очень хотел, чтобы вы не пытались воссоздать таблицы веб-сайтов в режиме просмотра и пытались найти общий способ записи указанной модели просмотра в closedxml

+0

. Записать доступ к корню C: по умолчанию отказано, попробуйте другое местоположение ... –

+0

@AlexK. Я обновил работу в папке 'C:/test /', но это не исправило проблему, я все еще получая, что несколько символов «7A133BE0», как исключение – Kritner

+0

, отлично работают для меня, дорожки слэш должны быть в обратном направлении, поэтому замените «/» на «\» – Innat3

ответ

0

Проблема связана с файловым путем @ "C: /test.html «; @ "C:/test.XLSX ";

должен быть

@" C: \ test.html "; @" C: \ test.xlsx ";

Пожалуйста, оцените answere, если это поможет вам