我使用Microsoft Interop生成一些Excel文件,没问题,我可以创建文件,工作表,文件,密码保护。但我想:使用Microsoft Interop格式化Excel单元
- 特定范围内只允许数字
- 为其他特定的范围,只允许数字,但只有0或1
你有一个想法如何做到这一点?
感谢,
我使用Microsoft Interop生成一些Excel文件,没问题,我可以创建文件,工作表,文件,密码保护。但我想:使用Microsoft Interop格式化Excel单元
你有一个想法如何做到这一点?
感谢,
了一段时间,但我认为我得到了它。我假设你正在使用Excel 2007.我也假设你已经有一个范围的参考。这是一个简单的例子。
Excel.Worksheet sheet = this.Application.ActiveSheet as Excel.Worksheet;
Excel.Range range = sheet.get_Range("A1", "A5") as Excel.Range;
//delete previous validation rules
range.Validation.Delete();
range.Validation.Add(Excel.XlDVType.xlValidateWholeNumber,
Excel.XlDVAlertStyle.xlValidAlertStop,
Excel.XlFormatConditionOperator.xlBetween,
0, 1);
这将在这种情况下添加数的确认和之间,用于在特定的范围A1和A5之间。
您也可以与验证发挥进一步对象来创建自定义错误消息等
希望这有助于。
如果您想验证的进入细胞,看Validation.Add方法。
你的第二个是一样的东西:
aRange.Validation.Add(XlDVType.xlValidateWholeNumber, XlDVAlertStyle.xlValidAlertStop, XlFormatConditionOperator.xlBetween, 0, 1);
想到我会发布一些可能有用的代码,包括需要的MS命名空间。
using System;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;
/// <summary>
/// setup this cell to validate (and report error) as decimal value input
/// </summary>
void SetupCellValidation_decimal(Excel.Range cell)
{
try
{
// Delete any previous validation
cell.Validation.Delete();
// Add validation that allows any decimal value
cell.Validation.Add(Excel.XlDVType.xlValidateDecimal, Excel.XlDVAlertStyle.xlValidAlertStop,
Excel.XlFormatConditionOperator.xlBetween, decimal.MinValue, decimal.MaxValue);
cell.Validation.IgnoreBlank = true; // allow blank entries
cell.Validation.ErrorTitle = "Invalid Entry";
cell.Validation.ErrorMessage = "You must enter a valid number";
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("validate error: " + ex.Message);
}
}
/// <summary>
///
/// </summary>
void exampleCellValidator(Excel.Range cell)
{
try
{
//Delete any previous validation
cell.Validation.Delete();
// for integers:
cell.Validation.Add(Excel.XlDVType.xlValidateWholeNumber, Excel.XlDVAlertStyle.xlValidAlertStop,
Excel.XlFormatConditionOperator.xlBetween, 0, 120);
// for decimal:
cell.Validation.Add(Excel.XlDVType.xlValidateDecimal, Excel.XlDVAlertStyle.xlValidAlertStop,
Excel.XlFormatConditionOperator.xlBetween, decimal.MinValue, decimal.MaxValue);
cell.Validation.IgnoreBlank = true;
// error messaging
cell.Validation.ErrorMessage = "Entry is not a valid number";
cell.Validation.ErrorTitle = "Error - invalid entry";
// use these if you want to display a message each time user activates this cell
cell.Validation.InputTitle = "Entry Rule"; // a message box title
cell.Validation.InputMessage = "You must enter a valid number"; // message to instruct user what to do
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("validate error: " + ex.Message);
}
}
我会试试这个。但是我为Office 2002使用interop,它是我的客户 – 2009-10-13 17:38:04
@Kris的“标准”,这应该可以工作。让我知道如果没有,我会看看我能否得到2002年的工作。 – 2009-10-13 20:46:54
我试过用Visual Studio 2005和Excel 2003,它可以工作。我无法得到的一件事是如何不通过可选参数。根据你使用Type.Missing的文档,但是这个编译它的结果是“Exception from HRESULT:0x800A03EC”。 – Mark 2009-10-13 22:37:14