我希望遍历文件夹中的所有文件,并将其文件名添加到Excel中的一行中。为此,我有一个要使用的Excel模板文件,并开始在包含公式的特定行上添加数据。
我使用以下数据,并且能够遍历文件,但是由于出现错误,我无法复制行并在粘贴数据之前插入另一行
string rootfolder = Path.GetDirectoryName(path);
string folder = Path.GetFileName(Path.GetDirectoryName(path));
var excelApp = new Application();
var workbook = excelApp.Workbooks.Open(fileName);
var mWorkSheets = workbook.Worksheets;
var worksheet = (Worksheet)mWorkSheets.get_Item("Invoice");
excelApp.Visible = true;
int x = 13; // <- The row to copy which has formulas
Range RngToCopy = worksheet.get_Range("b13" , "l13").EntireRow;
foreach (var item in files)
{
Range RngToInsert = worksheet.get_Range("b" + x, Type.Missing).EntireRow;
RngToInsert.Insert(Microsoft.Office.Interop.Excel.XlInsertShiftDirection.xlShiftDown, RngToInsert.Copy(Type.Missing)); // --< Throws the error
worksheet.Cells[x, 2].Value2 = item.date;
worksheet.Cells[x, 3].Value2 = item.reference;
worksheet.Cells[x, 4].Value2 = item.source;
worksheet.Cells[x, 5].Value2 = item.count;
worksheet.Cells[x, 6].Value2 = item.costPerWord;
worksheet.Cells[x, 7].Value2 = item.STBY;
worksheet.Cells[x, 8].Value2 = item.costSTBY;
worksheet.Cells[x, 9].Value2 = item.SCH;
worksheet.Cells[x, 10].Value2 = item.costSCH;
x++;
}
错误
// System.Runtime.InteropServices.COMException:'这不起作用 因为它会移动工作表中表格中的单元格。”
答案 0 :(得分:1)
我想这取决于您的模板。 当您尝试在Excel中编辑格式表或链接表(例如odbc)时,会出现错误消息。 您可以使用空白的excel表格尝试代码,以查看是否可行,如果这是模板本身而不是代码的问题。
代码本身看起来不错
答案 1 :(得分:0)
我最终只是将一个公式直接添加到单元格中
int x = 13;
Range line = (Range)worksheet.Rows[13].EntireRow;
foreach (var item in files)
{
worksheet.Cells[x, 2].Value2 = item.date;
worksheet.Cells[x, 3].Value2 = item.reference;
worksheet.Cells[x, 4].Value2 = item.source;
worksheet.Cells[x, 5].Value2 = item.count;
worksheet.Cells[x, 6].Value2 = item.costPerWord;
worksheet.Cells[x, 7].Value2 = item.STBY;
worksheet.Cells[x, 8].Value2 = item.costSTBY;
worksheet.Cells[x, 9].Value2 = item.SCH;
worksheet.Cells[x, 10].Value2 = item.costSCH;
worksheet.Cells[x, 11].Formula = string.Format("=SUM(F{0}+H{0}+J{0})", x);