繁体   English   中英

在“ file.html”中保存HTML表格到Excel

[英]saving HTML table in “file.html” to excel

最近有一个Microsoft补丁破坏了html-> xls出口(此问题已得到修复 )。

我们当前的导出过程基本上只是将中继器中的内容作为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>

看起来像这样在excel中打开的:

在此处输入图片说明

我(尝试)使用excel 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 l无法访问文件'C:// 7A133BE0'。 有几种可能的原因:

文件名或路径不存在。

该文件正在被另一个程序使用。

您尝试保存的工作簿与当前打开的工作簿具有相同的名称。

在Microsoft.Office.Interop.Excel._Workbook.SaveAs(对象文件名,对象文件格式,对象密码,对象WriteResPassword,对象ReadOnlyRecommended,对象CreateBackup,XlSaveAsAccessMode AccessMode,对象冲突解决方案,对象AddToMru,对象TextCodepage,对象TextVisualLayout,对象本地)

我不确定“ 7A133BE0”的来源,但我猜它是一个临时工作文件,因为每次尝试运行时该值都会改变。

是否有另一种方式可以通过编程方式来完成我想做的事情? 我真的很想避免尝试在viewmodel中重新创建网站表,并试图找到一种通用的方式在closedxml中写出所说的viewmodel

问题出在文件路径@“ C:/test.html”; @“ C:/test.xlsx”;

应该

@“ C:\\ test.html”; @“ C:\\ test.xlsx”;

如果有帮助,请评价答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM