我正在尝试使用Open XML C#创建Excel文件,在我的excel文件中需要创建多个表格。请按如下所示找到我的代码,并为我提供解决方案。
当我打开excel时,只有1张纸存在,第二张纸被第一张纸覆盖。
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
<script type="text/javascript">
</script>
</head>
<body>
<form name="formvalidation" method="POST" onsubmit="return mytq();" action="#">
<h1>Welcome to FTN.</h1>
<p>Fill this form before</p>
<hr>
<label for="name"><b>Full Name</b></label>
<input type="text" name="fullname" placeholder="Full Name" required>
<label for="email"><b>Email</b></label>
<input type="text" name="email" placeholder="Email" required>
<label for="age"><b>Age</b></label>
<input type="number" name="age" required>
<label for="password"><b>Password</b></label>
<input type="password" name="password" placeholder="Password" required>
<label for="password-repeat"><b>Re-type password</b></label>
<input type="password" name="pwdrpt" placeholder="Re-type Password" required>
<hr>
<p>By creating this account, you are agreeeing our terms and condition</p>
<button type="submit" class="registerbtn">Submit</button>
</form>
</body>
</html>
答案 0 :(得分:0)
在处理OpenXML时,“ OpenXML生产力工具”(可从Microsoft的网站下载)是您的朋友。在使用OpenXML创建文档时,请执行以下操作:
如果这样做,我将得到所需的所有代码。我将其归结为要回答您的问题的要点。 Excel会抱怨下面生成的文档已损坏(因为它包含的全部内容都是创建两个工作表的代码-并留下了许多其他所需的代码-所有这些都可以从该工具中窃取)。但是,如果您告诉Excel“为我修复此问题”,则将获得包含两页的文档,分别标记为“第一”和“第二”
WorkbookPart workbookPart1 = document.AddWorkbookPart();
Workbook workbook1 = new Workbook() { MCAttributes = new MarkupCompatibilityAttributes() { Ignorable = "x15 xr xr6 xr10 xr2" } };
//lots of namespace declarations - copy them from the tool (they are needed!!)
//lots of code for WorkbookProperties, etc (you can get this from Tool)
Sheets sheets1 = new Sheets();
Sheet sheet1 = new Sheet() { Name = "First", SheetId = (UInt32Value)1U, Id = "rId1" };
Sheet sheet2 = new Sheet() { Name = "Second", SheetId = (UInt32Value)2U, Id = "rId2" };
sheets1.Append(sheet1);
sheets1.Append(sheet2);
//More elided code
workbook1.Append(sheets1);
workbookPart1.Workbook = workbook1;
我强烈建议您保持Sheet和Sheets之类的多元性清晰。您的代码中包含Sheets sheetCol = new Sheets();
,但不清楚sheetCol
是表格还是表格。
然后您有一个名为sheetToCreate
的对象,它是一个SheetData
对象。同样,这令人困惑-将其命名为thisSheetData
之类的东西。我真的强烈建议您尽可能多地遵循OpenXML命名,否则就很难跟踪正在发生的事情。
一旦您写出文件,生产力工具也将很方便。您可以看到自己创建的内容,经常发现错误所在。此外,还有一个验证按钮,通常(并非总是)将您指出文档结构中的问题。
祝你好运。准备好更好地利用您的代码!