Visual C# 操作 Excel 文件(四) 存檔及其他操作

不管對 Excel 填入資料或插入圖片,最後總是得保存起來,而保存檔案的方式則是使用 SaveAs() 方法:

public virtual void SaveAs (
    [OptionalAttribute] Object Filename,
 
    [OptionalAttribute] Object FileFormat,
 
    [OptionalAttribute] Object Password,
 
    [OptionalAttribute] Object WriteResPassword,
 
    [OptionalAttribute] Object ReadOnlyRecommended,
 
    [OptionalAttribute] Object CreateBackup,
 
    [OptionalAttribute] XlSaveAsAccessMode AccessMode,
 
    [OptionalAttribute] Object ConflictResolution,
 
    [OptionalAttribute] Object AddToMru,
 
    [OptionalAttribute] Object TextCodepage,
 
    [OptionalAttribute] Object TextVisualLayout,
 
    [OptionalAttribute] Object Local
)

這麼多的參數,除了少數幾個之外,基本上都用不到,所以在 MyExcel 中新增了一個 Save()方法,只保留一個檔名的參數,省去一些麻煩。

public void Save(string szFile)
{
 
  try
 
  {
 
          m_aWB.SaveAs(szFile, missing, missing, missing, missing,missing,
 
                                    Excel.XlSaveAsAccessMode.xlNoChange, missing, missing,
 
                                    missing, missing, missing);
 
  }
 
  catch (Exception e)
 
  {
 
          System.Windows.Forms.MessageBox.Show(e.Message, szFile);
 
          throw e;
 
  }
}

在我自己的應用中,我還會對 Worksheet 做切換、新增、刪除的動作,所以在 MyExcel 中也增加了相對應的方法:

public void SetSheets(int no)
{
 
    m_aSheet =(Excel.Worksheet)m_aWB.Sheets.get_Item(no);
}

public void SetSheets(string szName)
{
 
    m_aSheet = (Excel.Worksheet)m_aWB.Sheets.Item[szName.Trim()];
}

/// 複製一個指定的 Worksheet,並插入在其前面。
/// szSrcName: 要複製的 Worksheet 名稱。
/// szNewName: 新增的 Worksheet 名稱。
public void CopySheet(string szSrcName, string szNewName)
{
 
    Excel.Worksheet aSheet;
 
   
 
    aSheet =(Excel.Worksheet)m_aWB.Sheets.Item[szSrcName.Trim()];
 
    aSheet.Copy(aSheet, Type.Missing);

 
    aSheet =(Excel.Worksheet)m_aWB.Sheets.Item[szSrcName.Trim() + "(2)"];
 
    aSheet.Name= szNewName;
}

/// 刪除一個 Worksheet。
public void RemoveSheet(string szName)
{
 
    Excel.Worksheet aSheet =(Excel.Worksheet)m_aWB.Sheets.Item[szName.Trim()];
 
    aSheet.Delete();
}

/// 設定單元格公式。
public void SetFormula(int col, int row, string szValue)
{
 
    Excel.Range oRange = (Excel.Range)m_aSheet.Cells[row, col];
 
    oRange.Formula = szValue;
}
public void SetFormula(string szRangeName, string szValue)
{
 
    Excel.Range oRange = m_aSheet.get_Range(szRangeName, missing);
 
    oRange.Formula = szValue;
}

/// 將給定的 col, row 值轉換成 RangeName。
public string GetRangeName(Int32 nCol, Int32 nRow)
{
 
    string buf ="";

 
    if (nCol< 27)
 
          buf = Convert.ToChar(64 + nCol).ToString();
 
    else
 
    {
 
          int i = (nCol - 1) / 26;
 
          int j = (nCol - 1) % 26;
 
          buf = Convert.ToChar(64 + i).ToString() +
 
                    Convert.ToChar(65 + j).ToString();
 
    }
 
    return buf +nRow.ToString();
}

/// 將給定的 RangeName 轉換成 Col, Row 值。
public void RangeNameToColRow(string szRangeName, ref int nCol, refint nRow)
{
 
    string buf =szRangeName.Substring(1, 1).ToUpper();
 
    int i =(int)(char.Parse(buf));
 
    if (i>= 48 && i<= 57)
 
    {
 
            i = (int)(char.Parse(szRangeName.Substring(0, 1).ToUpper()));
 
            nCol = i - 64;
 
            nRow = int.Parse(szRangeName.Substring(1, szRangeName.Length -1));
 
    }
 
    else
 
    {
 
            i = (int)(char.Parse(szRangeName.Substring(0, 1).ToUpper()));
 
            nCol = i - 64;
 
            i = (int)(char.Parse(szRangeName.Substring(1, 1).ToUpper()));
 
            nCol = nCol * 26 + i - 64;
 
            nRow = int.Parse(szRangeName.Substring(2, szRangeName.Length -2));
 
      }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值