Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从一个excel工作表复制到其他格式的工作表时,会在VB.net中丢失_C#_Vb.net - Fatal编程技术网

C# 从一个excel工作表复制到其他格式的工作表时,会在VB.net中丢失

C# 从一个excel工作表复制到其他格式的工作表时,会在VB.net中丢失,c#,vb.net,C#,Vb.net,objExcelAppDataSheet是excel应用程序的对象,strTemplatePath是excel文件的路径。。。 这个excel文件就像我在应用程序中使用的模板。在此文件中,一些单元格被合并。复制到新工作表后,工作表的格式将不保持不变。列大小正在更改。为什么会出现这种问题?? 这是MS office版本问题吗 您是否尝试复制整个工作表,而不仅仅是一些单元格。下面的示例假设您正在从源(模板)工作簿复制到另一个工作簿。你的问题在这一点上不清楚,所以这是我的假设

objExcelAppDataSheet是excel应用程序的对象,strTemplatePath是excel文件的路径。。。 这个excel文件就像我在应用程序中使用的模板。在此文件中,一些单元格被合并。复制到新工作表后,工作表的格式将不保持不变。列大小正在更改。为什么会出现这种问题??
这是MS office版本问题吗

您是否尝试复制整个工作表,而不仅仅是一些单元格。

下面的示例假设您正在从源(模板)工作簿复制到另一个工作簿。你的问题在这一点上不清楚,所以这是我的假设

                    Dim objworkbook As Excel.Workbook
                    objworkbook = objExcelAppDataSheet.Workbooks.Add(strTemplatePath)
                    Dim sheet_new As Excel.Worksheet
                    sheet_new = objworkbook1.Sheets.Add()
                    sheet_new.Name = objworksheet.Name
                    objworksheet.Cells.Range("A1", "EX150").Copy()
                    sheet_new.Paste()
                    Clipboard.Clear()
                    objworkbook.Close(SaveChanges:=False)
如果只是在源工作簿中复制和粘贴(而不是使用其他目标),则可以删除代码中的目标工作簿部分。那么您的副本声明将如下所示:

  Dim strTemplatePath As String = "...your source workbook path and name..."
  Dim strDestinationPath As String = "...your destination workbook path and name..."

  Dim sourceWorkBook As Excel.Workbook
  Dim destWorkBook As Excel.Workbook

  sourceWorkBook = objExcelAppDataSheet.Workbooks.Add(strTemplatePath)
  destWorkBook = objExcelAppDataSheet.Workbooks.Add(strDestinationPath)

  Dim mySourceSheetName As String = "...your source worksheet name..."

  Dim sourceWorkSheet As Excel.Worksheet
  sourceWorkSheet = sourceWorkBook.Sheets(mySourceSheetName)

  //Copies the source worksheet to the destination workbook, places it after the last
  //sheet in the destination workbook.
  sourceWorkSheet.Copy(, destWorkBook.Sheets(destWorkBook.Sheets.Count))

  destWorkBook.SaveAs(strDestinationPath)

  destWorkBook.Close()
  sourceWorkBook.Close()
这将把源工作表放在源工作簿中最后一张工作表之后

如果要在新工作表中复制包含列宽、行高、单元格合并等的格式,则需要复制整个工作表


如果不需要源工作表上的所有数据,但仍然需要列宽等,则必须首先复制整个工作表;然后清除新复制的工作表。这将删除数据,但不会删除格式。然后,您可以只复制包含所需数据的单元格区域。

Selection.copy range(“I5”)。Select.Paste特殊粘贴:=xlPasteFormats,Operation:=xlNone,uu-SkipBlanks:=False,Transpose:=False@whunmr的注释没有帮助?否,实际上,它在PasteSpecialFormatting中给出的异常保持不变,但列大小发生了变化……我尝试过,但有时在paste()语句中它给出了异常如果我查看一下示例,则没有paste()函数。它在以下情况下工作:worksheet.copy after:=newWorkbook.Sheets(newWorkbook.Sheets.Count)
sourceWorkSheet.Copy(, sourceWorkBook.Sheets(sourceWorkBook.Sheets.Count))