2017-04-14 75 views
1

這是我的第一個AddIn excel,並且我在使用分隔符(「|」)導出文本文件中的excel文件時遇到了問題。 我想導出excel的文件在相同的路徑,擴展名爲「.txt」,我想用特定字符(「|」)分隔excel的列。C#AddIn Excel:導出帶分隔符的文本文件中的xls文件

我創建功能區上的一個按鈕:

private void exportSave_Click(object sender, RibbonControlEventArgs e) 
    { 
     int lastColumns;   
     lastColumns = usedRange.Columns.Count; 
     int endCol = lastColumns; 

     Microsoft.Office.Interop.Excel.Worksheet xlSheet = Globals.VATTools.Application.ActiveSheet; 
     Microsoft.Office.Interop.Excel.Range usedRange = xlSheet.UsedRange; 

     // Save file in .txt in the same path 
     string path = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); 
     xlSheet.SaveAs(path, Microsoft.Office.Interop.Excel.XlFileFormat.xlTextWindows); 
    } 

我不知道格式「xlTextWindows」的。

我確定我的專欄,但我不知道如何將其導出爲.txt

由於之前加列之間的特定字符!

回答

2

試試下面的代碼:

public static void ExportToPipe(RibbonControlEventArgs e) 
{ 
    string ExportName = @"D:\Pipe.txt"; 
    Excel.Window window = e.Control.Context; 
    Excel.Worksheet sheet = ((Excel.Worksheet)window.Application.ActiveSheet); 
    Excel.Range last = sheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing); 

    int lastUsedRow = last.Row; 
    int lastUsedColumn = last.Column; 

    string output = ""; 

    for (int i = 1; i <= lastUsedRow; i++) 
    { 
     for (int j = 1; j <= lastUsedColumn; j++) 
     { 
      if (sheet.Cells[i, j].Value != null) 
      { 
       output += sheet.Cells[i, j].Value.ToString();       
      } 
      output += "|"; 
     } 
     output += Environment.NewLine; 
    } 

    FileStream fs = new FileStream(ExportName, FileMode.Create, FileAccess.Write); 
    StreamWriter writer = new StreamWriter(fs); 
    writer.Write(output); 
    writer.Close(); 
} 
+0

謝謝,這是完美的! – user2814368

相關問題