C# 用C语言实现Excel到HTML表格的转换#

C# 用C语言实现Excel到HTML表格的转换#,c#,html,excel,C#,Html,Excel,是否可以将excel电子表格转换为html代码,如果可以,最好的方法是什么(提供如何处理问题的基本代码)?我正在创建一个web应用程序,允许用户上传电子表格并输出html代码,然后使用干净的代码复制到CMS中 注意:我不是在寻找一个完整的代码示例或任何东西,只是想让我对如何解决这个问题有一个正确的想法 更新:下面的答案准确地总结了我想要的。在memorystream中打开文件,然后将所有内容格式化为一个表。在我看来,最干净、最可靠的解决方案是用自己的方法处理xlsx文件,然后用HTML返回字符串

是否可以将excel电子表格转换为html代码,如果可以,最好的方法是什么(提供如何处理问题的基本代码)?我正在创建一个web应用程序,允许用户上传电子表格并输出html代码,然后使用干净的代码复制到CMS中

注意:我不是在寻找一个完整的代码示例或任何东西,只是想让我对如何解决这个问题有一个正确的想法


更新:下面的答案准确地总结了我想要的。在
memorystream
中打开文件,然后将所有内容格式化为一个表。

在我看来,最干净、最可靠的解决方案是用自己的方法处理xlsx文件,然后用HTML返回字符串。有一个非常令人愉快的包叫做,它允许您轻松地管理xlsx文件。您可以轻松地遍历列和行,并生成任意形状的HTML

它可能看起来像这样:

public string XlsxToHTML(byte[] file)
{
   MemoryStream stream = new MemoryStream(file);
   StringBuilder stringBuilder = new StringBuilder();

   stringBuilder.Append("<table>");

   using(ExcelPackage excelPackage = new ExcelPackage(stream))
   {
      ExcelWorkbook workbook = excelPackage.Workbook;
      if(workbook!=null)
      {
         ExcelWorksheet worksheet = workbook.Worksheets.FirstOrDefault();
         if(worksheet!=null)
         {
            var firstCell = worksheet.Cells[1,1].Value;
            var secondCell = worksheet.Cells[1,2].Value;

            stringBuilder.Append("<tr><td>"+firstCell+"</td></tr>");
            stringBuilder.Append("<tr><td>"+firstCell+"</td></tr>");
         }
      }
   }

   stringBuilder.Append("</table>");

   return stringBuilder.ToString();
}
公共字符串XlsxToHTML(字节[]文件)
{
MemoryStream stream=新的MemoryStream(文件);
StringBuilder StringBuilder=新的StringBuilder();
stringBuilder.Append(“”);
使用(ExcelPackage ExcelPackage=新的ExcelPackage(流))
{
ExcelWorkbook工作簿=excelPackage.工作簿;
如果(工作簿!=null)
{
Excel工作表=工作簿.Worksheets.FirstOrDefault();
如果(工作表!=null)
{
var firstCell=工作表。单元格[1,1]。值;
var secondCell=工作表。单元格[1,2]。值;
追加(“+firstCell+”);
追加(“+firstCell+”);
}
}
}
stringBuilder.Append(“”);
返回stringBuilder.ToString();
}

当然,这只是一个例子。它是脏的,因为它附加了标签等等,但它是这个想法的一个快速示例…

在我看来,最干净、最健壮的解决方案是用自己的方法处理xlsx文件,然后用HTML返回字符串。有一个非常令人愉快的包叫做,它允许您轻松地管理xlsx文件。您可以轻松地遍历列和行,并生成任意形状的HTML

它可能看起来像这样:

public string XlsxToHTML(byte[] file)
{
   MemoryStream stream = new MemoryStream(file);
   StringBuilder stringBuilder = new StringBuilder();

   stringBuilder.Append("<table>");

   using(ExcelPackage excelPackage = new ExcelPackage(stream))
   {
      ExcelWorkbook workbook = excelPackage.Workbook;
      if(workbook!=null)
      {
         ExcelWorksheet worksheet = workbook.Worksheets.FirstOrDefault();
         if(worksheet!=null)
         {
            var firstCell = worksheet.Cells[1,1].Value;
            var secondCell = worksheet.Cells[1,2].Value;

            stringBuilder.Append("<tr><td>"+firstCell+"</td></tr>");
            stringBuilder.Append("<tr><td>"+firstCell+"</td></tr>");
         }
      }
   }

   stringBuilder.Append("</table>");

   return stringBuilder.ToString();
}
公共字符串XlsxToHTML(字节[]文件)
{
MemoryStream stream=新的MemoryStream(文件);
StringBuilder StringBuilder=新的StringBuilder();
stringBuilder.Append(“”);
使用(ExcelPackage ExcelPackage=新的ExcelPackage(流))
{
ExcelWorkbook工作簿=excelPackage.工作簿;
如果(工作簿!=null)
{
Excel工作表=工作簿.Worksheets.FirstOrDefault();
如果(工作表!=null)
{
var firstCell=工作表。单元格[1,1]。值;
var secondCell=工作表。单元格[1,2]。值;
追加(“+firstCell+”);
追加(“+firstCell+”);
}
}
}
stringBuilder.Append(“”);
返回stringBuilder.ToString();
}

当然,这只是一个例子。它很脏,因为它附加了标签等等,但这是一个简单的例子…

是的,这是可能的,到目前为止您尝试过搜索什么?您可以从“一个可以帮助您读/写Office 2003/2007文件的开源项目”开始尝试。我尝试过将excel搜索到html表,但我发现的一切都是html表格到excel,我已经知道如何做了……我猜我必须在memorystream中打开excel表格,然后以某种方式将其格式化为html?@Jobokai这基本上与你找到的教程相反。获取文件,在所选库中创建文档对象(,和),然后遍历行/列并生成HTML。在一个答案中向你展示做这件事的每一步都是很难做到的。但是现在你已经有了一个大致的想法,你应该试一试,如果你的实现有具体的问题,就来找我们。@mason谢谢你提供的信息,我只是不确定它是否会像那样简单。是的,我不想找人发布代码或教程,因为我知道它会很长。是的,这是可能的,到目前为止您尝试过搜索什么?您可以从“一个开源项目,可以帮助您读/写Office 2003/2007文件”开始尝试。我尝试过将excel搜索到html表,但我发现的一切都是html表格到excel,我已经知道如何做了……我猜我必须在memorystream中打开excel表格,然后以某种方式将其格式化为html?@Jobokai这基本上与你找到的教程相反。获取文件,在所选库中创建文档对象(,和),然后遍历行/列并生成HTML。在一个答案中向你展示做这件事的每一步都是很难做到的。但是现在你已经有了一个大致的想法,你应该试一试,如果你的实现有具体的问题,就来找我们。@mason谢谢你提供的信息,我只是不确定它是否会像那样简单。是的,我不想找人发布代码或教程,因为我知道它会很长。谢谢你的资源。我想这会让我打开excel文件,然后输出html,比如说一个文本框/字段供用户复制?我不想向我的服务器实际写入文件。你是说打开Office XML电子表格(.xlsx)文件。大多数库不支持.xls文件。我知道EPPlus不支持.xls,但支持.xlsx。@Jobokai是的,这些库可以从文件中读取数据,也可以写入数据。它们都适用于这两种情况。您不需要将任何文件写入服务器。您只需通过网页上传一个文件,然后服务器就可以在内存中处理它,方法的输出可以是纯HTML字符串。请对EPPlus进行一些研究,您将看到在行上迭代和读取值是非常容易的。然后,您可以使用TagBuilder和/或Stri构建HTML表