我用 C# 开发了一个脚本,用于将一些 Excel 工作表转换为 HTML。但是,在 HTML 中,我将所有单元格放在一行中。我希望它们像在 Excel 中一样。我的 C# 代码:
string ExcelToHTML()
{
string excelFile = @"myexcelfilepath.xlsx";
StringBuilder html = new StringBuilder();
FileInfo file = new FileInfo(excelFile);
using (ExcelPackage package = new ExcelPackage(file))
{
foreach (ExcelWorksheet worksheet in package.Workbook.Worksheets)
{
html.Append("<h1>" + worksheet.Name + "</h1>\n"); //Header
html.Append("<table border='1'>\n");
ConvertSheetToHtml(worksheet, html);
html.Append("</table>\n");
html.Append("<br/>\n");
}
}
string htmlFile = @"C:\pathToMyHTMLFile.html";
File.WriteAllText(htmlFile, html.ToString());
Console.WriteLine("HTML file has been generated at: " + htmlFile);
return html.ToString();
}
void ConvertSheetToHtml(ExcelWorksheet worksheet, StringBuilder html)
{
bool newRow = true;
// Iterate through rows
foreach (var row in worksheet.Cells)
{
if (newRow)
{
htmlContent.Append("<tr>"); // Start row
newRow = false; // Reset the flag
}
// Iterate through cells
foreach (var cell in row)
{
string cellData = cell.Text;
if (cell.Style.Font.Bold) //checking if cell is bold
{
html.Append("<b>" + cellData + "</b>");
}
else
{
html.Append("<td>" + cellData + "</td>"); // Data cell
}
}
newRow = true; // Set the flag for the next row
}
html.Append("</tr>\n");
}
我获取 html Lookout 的方式是:
<tr><td>ex1</td></tr>
<tr><td>ex2</td></tr>
<tr><td>ex3</td></tr>
我想要的方式是:(假设“ex1”和“ex2”在Excel中的同一行)
<h1>Sheet 1</h1>
<table border = '1'>
<tr><td>ex1</td><td>ex2</td></tr>
<tr><td>ex3</td><td>ex4</td></tr>
</table>
<line break>
<h1>Sheet 2</h1>
<table border = '1'>
<tr><td>sx1</td><td>sx2</td></tr>
<tr><td>sx3</td><td>sx4</td></tr>
</table>
所以如果 Excel 1 行有 10 列,我希望它们在 HTML 中也一样。目前,我为每个数据单元格获取一个新行。或者,如果我在函数中以新行结束该行,我会从 1 行中的列中获取 1 个工作表的所有数据单元格
您应该使用工作表的 .Rows 属性。 还可以简化。
void ConvertSheetToHtml(ExcelWorksheet worksheet, StringBuilder html)
{
// Iterate through rows
foreach (var row in worksheet.Rows)
{
htmlContent.Append("<tr>"); // Start row
// Iterate through cells
foreach (var cell in row)
{
string cellData = cell.Text;
if (cell.Style.Font.Bold) //checking if cell is bold
{
html.Append("<b>" + cellData + "</b>");
}
else
{
html.Append("<td>" + cellData + "</td>"); // Data cell
}
}
html.Append("</tr>\n"); // End row
}
}