使用Excel

时间:2017-01-26 19:26:08

标签: xml excel

我需要使用Excel创建将由不同用户打开的XML文件。

有没有办法让一些单元格锁定,以便用户无法更改其内容?这仅适用于某些单元格/列。

如果我理解正确,因为XML是一个文本文件,没有办法安全地锁定文档,但我可以接受,

锁定单元格以防止意外修改会有很大帮助,而且有人可以故意编辑XML(在记事本中)并解锁单元格的事实并不理想,但在这种情况下是可以接受的。

1 个答案:

答案 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>