11

我正在使用 xls 文件。如何像 Windows 桌面一样使用相同的文件名 +“(副本 1)”保存它(如果存在)。

方法 saveCommande(...)

        if(!Directory.Exists(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "EE_Commande_Fournisseur"))
        {
            Directory.CreateDirectory(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\EE_Commande_Fournisseur");
        }
        xlWorkBook.SaveAs("EE_Commande_Fournisseur\\" + path, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, true, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
        path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\EE_Commande_Fournisseur\\" + path;

        xlWorkBook.Close(true, misValue, misValue);
        xlApp.Quit();
        this.ReleaseComObject(xlApp,xlWorkBook);
        //sauvergarde dans la base de données
        _newAchatCommande.path = path;
        this._fileName = path;
        contexte.AddToAchatCommande(_newAchatCommande);
        contexte.SaveChanges();

谢谢

4

3 回答 3

17

尝试使用 File 对象的 Exists 方法:

  if (!System.IO.File.Exists(@"C:\test2.xls"))
  {
   xlWorkBook.SaveAs(@"c:\test2.xls"); 
  }
  else
  {

   xlWorkBook.SaveAs(@"c:\test2(Copy).xls"); 

  }  

或者,您可以通过以下方式覆盖您的 excel 文件

   Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

  excel.DisplayAlerts = false;

  excelSheePrint.SaveAs(filename, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, true, false, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing);

注意:它会在不询问用户的情况下覆盖现有的 excel(如果存在)。

于 2013-08-17T13:14:33.180 回答
0

有用!谢谢

  private void SaveNewCommande(YetiBddEntities contexte, Excel.Application xlApp, Excel.Workbook xlWorkBook, string path, object misValue)
    {
        string tmpPath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\EET_Commande_Fournisseur";
        if (!Directory.Exists(tmpPath))
        {
            Directory.CreateDirectory(tmpPath);
        }  
        foreach (string file in Directory.GetFiles(tmpPath))
        {
            if ((path+".xls").Equals(file.Substring(tmpPath.Length+1)))
                count++;
        }
        if (count>0)
            xlWorkBook.SaveAs(string.Format("EET_Commande_Fournisseur\\{0}_({1}).xls", path, count), Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
        else
            xlWorkBook.SaveAs(string.Format("EET_Commande_Fournisseur\\{0}.xls", path) + path, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);

        path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\EET_Commande_Fournisseur\\" + path+".xls";
        xlWorkBook.Close(true, misValue, misValue);
        xlApp.Quit();
        this.ReleaseComObject(xlApp,xlWorkBook);
        //sauvergarde dans la base de données
        _newAchatCommande.path = path;
        this._fileName = path;
        contexte.AddToAchatCommande(_newAchatCommande);
        contexte.SaveChanges();
    }
于 2013-08-17T13:43:02.920 回答
0
     DataTable dt= dtData;

   using (XLWorkbook wb = new XLWorkbook())
   {       

                 //Range(int firstCellRow,int firstCellColumn,int lastCellRow,int lastCellColumn)
                int CCount = dt.Columns.Count;

                int RCount = dt.Rows.Count;

                var ws = wb.Worksheets.Add("Report"); //add worksheet to workbook
                ws.Row(1).Cell(1).RichText.AddText(ReportName);

                ws.Range(1, 1, 1, CCount).Merge();

                ws.Range(1, 1, 1, CCount).Style.Font.Bold = true;//Range(int firstCellRow,int firstCellColumn,int lastCellRow,int lastCellColumn)
                ws.Range(1, 1, 1, CCount).Style.Font.FontSize = 16;

                ws.Range(1, 1, 1, CCount).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

                ws.Range(1, 1, 1, CCount).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;

                //ws.Range("A1:Z1").Style.Font.Bold = true;

                ws.Row(2).Cell(1).InsertTable(dt);

                ws.Range("A2:Z2").Style.Font.Bold = true;

                ws.Range(2, 1, RCount + 2, CCount).Style.Border.OutsideBorder = XLBorderStyleValues.Medium;

                wb.SaveAs(FolderPath + filename + ".xlsx");

                ws.Dispose();


        }
于 2016-02-25T10:44:07.267 回答