代码之家  ›  专栏  ›  技术社区  ›  Sean Bailey

用C#(Interop.Excel)设置列宽

  •  3
  • Sean Bailey  · 技术社区  · 6 年前

    我有一个c#脚本,可以成功打开指定的Excel工作簿,删除第一行并将其保存为csv格式。

    我有一个问题,CSV保存为标准列宽度8.43。我想在保存CSV之前,将列J的列宽度更改为17.00。

    有人能告诉我如何将J列的列宽度设置为17吗。

    由于该过程,我无法使用VBA/宏。

    我正在使用;

    myWorkSheet.Columns["J:J"].ColumnWidth = 17.57;
    

    然而,这导致对象不包含附加的“ColumnWidth”屏幕截图的定义。 enter image description here

    下面的完整代码;

            public void DeleteRows(string OriginalFileName,String NewFileName)
        {
            Microsoft.Office.Interop.Excel.Application myApp;
            Microsoft.Office.Interop.Excel.Workbook myWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet myWorkSheet;
            Microsoft.Office.Interop.Excel.Range range;
            myApp = new Microsoft.Office.Interop.Excel.Application();
            myWorkBook = myApp.Workbooks.Open(OriginalFileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            myWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets.get_Item(1);
            range = (Microsoft.Office.Interop.Excel.Range)myWorkSheet.Application.Rows[1, Type.Missing];
            range.Select();
            range.Delete(Microsoft.Office.Interop.Excel.XlDirection.xlUp);
            //Microsoft.Office.Interop.Excel.Range ThisRange1 = myWorkSheet.get_Range("J:J",System.Type.Missing);
            myWorkSheet.Columns["J:J"].ColumnWidth = 17.57; //ERRORLINE
            myApp.DisplayAlerts = false;
            myWorkSheet.SaveAs(NewFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, false, false, false, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing);
            myWorkBook.Close(false);
            myApp.Quit();
        }
    
    1 回复  |  直到 6 年前
        1
  •  6
  •   Aousaf Rashid    6 年前

    我认为您不需要为此设置范围:

     Using Excel=Microsoft.Office.Interop.Excel;
     Excel.Worksheet myWorkSheet = new Excel.Worksheet;
    
     myWorkSheet.Columns["J:J"].ColumnWidth = 17.57;
    
    ///Or set width to AutoFit
    
     myWorkSheet.Columns.AutoFit();