我需要使用Excel创建将由不同用户打开的XML文件。
有没有办法让一些单元格锁定,以便用户无法更改其内容?这仅适用于某些单元格/列。
如果我理解正确,因为XML是一个文本文件,没有办法安全地锁定文档,但我可以接受,
锁定单元格以防止意外修改会有很大帮助,而且有人可以故意编辑XML(在记事本中)并解锁单元格的事实并不理想,但在这种情况下是可以接受的。
答案 0 :(得分:0)
您可以在使用XML文件但不使用密码时将工作表标记为受保护,这是XML的限制,因为任何人都可以在记事本中打开并在可能的情况下阅读。
<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet">
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"/>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"/>
<Styles>
<Style ss:ID="sUnlocked">
<Protection ss:Protected="0"/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet1" ss:Protected="1">
<Table>
<Row>
<Cell>
<Data ss:Type="String">sku</Data>
</Cell>
<Cell>
<Data ss:Type="String">name</Data>
</Cell>
<Cell>
<Data ss:Type="String">is_in_stock</Data>
</Cell>
<Cell>
<Data ss:Type="String">qty</Data>
</Cell>
<Cell>
<Data ss:Type="String">price</Data>
</Cell>
</Row>
<Row>
<Cell>
<Data ss:Type="String">A1234</Data>
</Cell>
<Cell>
<Data ss:Type="String">Something</Data>
</Cell>
<Cell>
<Data ss:Type="Number">1</Data>
</Cell>
<Cell ss:StyleID="sUnlocked">
<Data ss:Type="Number">17</Data>
</Cell>
<Cell ss:StyleID="sUnlocked">
<Data ss:Type="Number">47</Data>
</Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
请注意,您可以通过设置不受保护的样式来保护任何单元格或行
<Style ss:ID="sUnlocked">
<Protection ss:Protected="0"/>
</Style>