1
string file = "Test.xls";
Workbook workbook = new Workbook();
Worksheet sheet = new Worksheet("First Sheet");
workbook.Worksheets.Add(sheet);
for (int i = 0; i < 100; i++)
sheet.Cells[i][0] = new Cell(""); // error here
workbook.Save(file);

在这里,我正在尝试使用 excel 库创建一个 excel 文件。但是我收到一个错误“excel发现内容不清楚。然后我包含了一个for循环来用一些空数据填充excel表。但是现在我收到错误“方法'this'没有重载需要'1'参数”上面代码中的第 6 行。

我只想在 c# 中使用 ExcelLibrary 创建一个新的 Excel 工作表。

提前致谢!

4

4 回答 4

2

正如@Calvin 指出的那样,代码存在多个问题。这是一个有效的解决方案:

string file = "Test.xls";
Application excel = new Application();
Workbook workbook = excel.Workbooks.Add();
Worksheet sheet = (Worksheet) workbook.Worksheets.Add();
sheet.Name = "First Sheet";
for (int i = 1; i <= 100; i++)
    ((Range)sheet.Cells[i, 1]).Value = "";
workbook.SaveAs(file);
于 2013-11-03T15:18:14.607 回答
1

sheet.Cells[i][0] = new Cell("")您通过Range属性分配单元格而不是new Cell()

于 2013-11-03T15:25:43.747 回答
0

您需要参考 MSDN,因为它不像您期望或希望的那样简单。VSTO 通常从其他 .NET API 中脱颖而出,因为使用起来非常不直观。

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.worksheets.add.aspx

一方面,您不会调用 Add 传入您认为刚刚创建的工作表。Add 需要 4 个可选参数,但会创建一个工作表并返回对该工作表的引用。

例如在 MSDN 示例中:

Excel.Worksheet newWorksheet;
newWorksheet = (Excel.Worksheet)Globals.ThisWorkbook.Worksheets.Add();

要设置单元格值,请尝试

sheet.Cells[i,1].Value = ""; 

不是

sheet.Cells[i][0]...

另外,为了清楚起见,建议在 for 循环周围加上括号。保存两个字符没有任何好处。

for (int i = 1; i < 100; i++)
{
    sheet.Cells[i,1].Value = ""; // error here
}
workbook.Save(file);
于 2013-11-03T15:23:40.867 回答
0

尝试分配值

sheet.Cells[i][0].Value = "";
于 2013-11-03T15:28:59.660 回答