打开XML创建多个工作表

时间:2018-07-27 04:53:40

标签: c# excel spreadsheet openxml

我正在尝试使用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>

1 个答案:

答案 0 :(得分:0)

在处理OpenXML时,“ OpenXML生产力工具”(可从Microsoft的网站下载)是您的朋友。在使用OpenXML创建文档时,请执行以下操作:

  1. 创建一个与我想要使用Excel或Word相似的文档(在这种情况下,是具有两张纸的Excel电子表格文档(我将它们标记为“第一”和“第二”))。
  2. 在生产力工具中打开文档
  3. 反映代码(工具UI上的按钮)
  4. 复制/粘贴我想要的代码。

如果这样做,我将得到所需的所有代码。我将其归结为要回答您的问题的要点。 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命名,否则就很难跟踪正在发生的事情。

一旦您写出文件,生产力工具也将很方便。您可以看到自己创建的内容,经常发现错误所在。此外,还有一个验证按钮,通常(并非总是)将您指出文档结构中的问题。

祝你好运。准备好更好地利用您的代码!