Был недавний 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>
, который выглядит, как это открыто в первенствует:
Я (попытка) использовать первенствовать 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
. Записать доступ к корню C: по умолчанию отказано, попробуйте другое местоположение ... –
@AlexK. Я обновил работу в папке 'C:/test /', но это не исправило проблему, я все еще получая, что несколько символов «7A133BE0», как исключение – Kritner
, отлично работают для меня, дорожки слэш должны быть в обратном направлении, поэтому замените «/» на «\» – Innat3