2010-07-01 26 views
9

Trong XML của một trang tính trong tệp XLSX tệp (Excel 2007), thẻ có thuộc tính "t" bằng "s" là các loại chuỗi. Thẻ giá trị bên trong c cần phải được tra cứu và chuyển đổi thông qua tài liệu sharedStrings. Tuy nhiên, một số ô có s = "237" và không có thuộc tính t chút nào. Thẻ giá trị có một số nguyên như 39448 không liên quan đến tài liệu sharedStrings. Giá trị xuất hiện trong Excel là ngày 1/1/2008.Thuộc tính "s" nghĩa là gì trong một thẻ ô trong XLSX

Thuộc tính s biểu thị gì trong thẻ c trong XLSX?

giá trị Unknown

<c r="B47" s="237"> 
    <v>39448</v> 
</c> 

Shared String value

<c r="C47" t="s"> 
    <v>7</v> 
</c> 

Trả lời

7

Các s thuộc tính dùng để chỉ một phong cách. "237" là một kiểu được định nghĩa trong tệp styles.xml.

<v>39448</v>

... rất có thể là ngày ở định dạng kép. Và kiểu 237 cho phép xuất sắc để hiển thị ở định dạng ngày.

Bạn có thể xem ví dụ về cách làm việc này ở đây: http://blogs.msdn.com/b/brian_jones/archive/2007/05/29/simple-spreadsheetml-file-part-3-formatting.aspx

+0

Nhưng từ đâu '237' đến từ đâu? Tôi đang xem blog. Ông đề cập đến tất cả mọi thứ là * không dựa trên *, nhưng ông tham khảo phong cách '1', nhưng không có' 0-th' phong cách bất cứ nơi nào. '1' đến từ đâu? '237' đến từ đâu? –

+0

Đây là số nhận dạng cho kiểu trong tệp styles.xml. Nó có thể là bất kỳ số nguyên nào. – mscccc

0

Các s thuộc tính ám chỉ đó là tương đương với 237, trỏ chuột tới các yếu tố 237 được tìm thấy trong yếu tố phụ huynh trong file styles.xml chứa trong file xlsx .

Nếu giá trị tế bào là một ngày, nguyên tố này có thể tương tự như đoạn mã sau

<xf numFmtId="167" 
    fontId="6" 
    fillId="0" 
    borderId="6" 
    xfId="3" 
    applyNumberFormat="1" 
    applyFont="1" 
    applyFill="1" 
    applyBorder="1" 
    applyAlignment="1"> 
     <alignment horizontal="center"/> 
</xf> 

Tại thời điểm này chúng ta không thấy rằng tế bào này đại diện cho một kiểu ngày. Để hiểu điều đó, chúng tôi phải tìm số <numFmtId> bằng "167" làm khóa.

Giá trị này có thể được tìm thấy tại bắt đầu của tập tin styles.xml

<numFmts count="7"> 
    <numFmt numFmtId="164" formatCode="[$-409]d\-mmm\-yy;@"/> 
    <numFmt numFmtId="165" formatCode="0.000"/> 
    <numFmt numFmtId="166" formatCode="0.0"/> 
    <numFmt numFmtId="167" formatCode="[$-409]d\-mmm\-yyyy;@"/> 
    <numFmt numFmtId="168" formatCode="0.0%"/> 
    <numFmt numFmtId="169" formatCode="00000"/> 
    <numFmt numFmtId="170" formatCode="0.0000"/> 
</numFmts> 

Dòng với numFmtId = "167" chỉ ra rằng giá trị của tế bào là một ngày định dạng bằng chuỗi sau "[$ -409] d -mmm-yyyy; @"

trong sơ yếu lý lịch, để tìm thấy nếu một tế bào có chứa một số hoặc ngày chúng ta phải

  1. tìm thấy thuộc tính S (= phong cách) của <c> yếu tố
  2. tìm thuộc tính numFmtId của phần tử <xf> trong tệp styles.xml trong tệp xlsx.
  3. tìm thấy thuộc tính formatCode của <numFmt> có numFmtId như chìa khóa
  4. xem định dạng là một định dạng ngày tháng hoặc một định dạng số

Tôi hy vọng rằng có thể giúp đỡ người khác.

Các vấn đề liên quan