2013-02-13 22 views
0

我目前正在構建一個Web應用程序,它將以Excel電子表格格式爲用戶提供他們在當前頁面上的表格中看到的相同信息。我在另一個項目中發現了一些以前的代碼。試圖瞭解ASP.net中的C#和XML電子表格

小問題第一:有人知道列ss:寬度是如何工作的?這不完全匹配。 Column ss:AutoFitWidth="0" ss:Width="114"返回的列寬爲21.00 ...

我的大部分問題在於,傳遞到電子表格中的所有數據都有前導和尾部空白;我不知道如何刪除它。我試過.Trim(),當我編寫我的.ToString()查詢時,我一直在尋找其他方法,但我似乎沒有找到它。 以下是我的工作表的代碼片段:

<Worksheet ss:Name="UserMgmt1"> 
     <Table>   
      @*Name*@ 
      <Column ss:AutoFitWidth="0" ss:Width="114" /> 
      <Row> 
       <Cell ss:StyleID="s29"> 
        <Data ss:Type="String">Name</Data> 
        </Cell> 

      </Row> 
     @foreach (tbl_Users query in ViewBag.contents) 
      { 
      <Row> 
       <Cell ss:StyleID="s31"> 
        <ss:Data ss:Type="String" > 
         @(query.Name.ToString().Trim()) 
        </ss:Data> 
       </Cell> 
      </Row> 
      } 
    </Table> 
</Worksheet> 

忘了補充一點,實現這個代碼的ActionResult:

public ActionResult _Excel(tblUsers model) 
    { 
     List<tbl_Users> inquiriesList = UserManageModel.GetResults(model); 
     ViewBag.contents = inquiriesList; 
     return View("_Excel"); 
    } 

和呼叫:

@using (Html.BeginForm("_Excel", "UserManage", FormMethod.Post)) 
{ 
    <input type="submit" value="View Detailed List of Users in Excel" /> 
} 

結果在Excel中看起來像這樣,每個s周圍都有很多空白特林項目:

     Administrator       
+0

可以使例子更小,也表現出更多的背景嗎?比如,可能會顯示包含較小示例的視圖,並顯示該示例生成的XML。 – 2013-02-13 19:05:57

+0

什麼是將XML呈現爲電子表格?那些不是HTML元素。 – 2013-02-13 19:08:29

+0

@JohnSaunders沒問題,我希望我的補充示例能夠提供更多見解 – MacSalty 2013-02-13 19:20:11

回答

0

原來我的問題一直是我<Row>代碼

<ss:Data ss:Type="String" > 
     @(query.Name.ToString().Trim()) 
</ss:Data> 

<ss:Data>標記之間的領導和下面的空格被複制到Excel文檔格式。我不知道爲什麼這樣做,但這解決了我的問題。

2

根據MSDN上的XML Excel規範http://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx#odc_xmlss_ss:column ss:寬度是以點爲單位的列寬(根據屏幕分辨率等不同可能呈現不同)。

裁剪文字周圍的多餘空格可能是由於您的縮進。嘗試倒塌像這樣的XML元素:

<ss:Data ss:Type="String" >@(query.Name.ToString().Trim())</ss:Data> 
+0

這就是它最終成爲的原因。謝謝。 – MacSalty 2013-02-13 19:56:52