[英]How can I set an exact size (in centimeters) for an Excel cell programatically (C#)?
我打算從C#向Excel寫一些信息。 我使用的代碼是:
var oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = false;
var oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(""));
var oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
oSheet.Columns.ColumnWidth = 5;
oSheet.Rows.RowHeight = 5;
oSheet.Cells[1, 1] = "Smith";
...
問題是我需要為所有單元格設置以厘米(5)為單位的精確尺寸。 ColumnWidth
屬性接收點數而不是厘米。 在各種文章中,我發現1點= 0.035cm,意味着1cm = 28.57p,但是當我為ColumnWidth
和RowHeight
傳遞5 * 28.57時,Excel的列設置為28.58cm,行設置為5.04cm。
我該如何解決這個案子?
謝謝,
Excel中的列寬在“字符”中指定,而不是“點”。 默認列寬為8.37“字符”,1個字符是用於在Excel中顯示普通文本的默認字體的1個字符的寬度。
要以cm為單位指定列寬,您需要先使用以下函數將cm轉換為點:
double x = xl.Application.CentimetersToPoints(5);
然后使用一個循環重復地將列寬減小0.1個點,直到它與點數(x)匹配。 (對於寬度大於'x'點的列)
while(ws.Columns.ColumnWidth - 0.1 > points)
{
ws.Columns.ColumnWidth = ws.Columns.ColumnWidth - 0.1;
}
然后使用另一個循環重復地將列寬增加0.1點,直到它與點數(x)匹配。 (對於寬度小於'x'點的列)
while(ws.Columns.ColumnWidth + 0.1 < points)
{
ws.Columns.ColumnWidth = ws.Columns.ColumnWidth + 0.1;
}
由於循環,上述方法需要幾秒鍾才能執行。 但是,它實現了解決方案(以cm為單位設置列寬)。
注意:在上面的代碼中,xl:Excel應用程序對象ws:Worksheet對象
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.