标签: excel-interop

从IIS运行应用程序(asp.net)时无法创建excel文件

从IIS运行应用程序时,无法在特定路径上创建Excel文件.但它是在使用visual studio 2008进行代码时创建的.即使我尝试使用绝对路径并使用server.mappath()函数但是在虚荣.服务器抛出错误:HTTP 404.您正在寻找的资源(或者一个其依赖关系)可能已被删除,名称已更改,或暂时不可用.请查看以下网址,确保拼写正确.请求的URL:/Error.aspx

代码如下:

private void CreateExcel(DataTable dt)
    {
        try
        {

        FilePath =  "\\\\192.168.1.252\\GNC Reports\\TallyExport.xls";
            Excel.Application oXL = new Excel.Application();

            //Get a new workbook.
            Excel._Workbook oWB = (Excel._Workbook)(oXL.Workbooks.Add(Type.Missing));

            // *************** Sheet 1
            Excel._Worksheet oSheet = (Excel._Worksheet)oWB.Sheets["Sheet1"];
            oSheet.Name = "Journal";
            WriteWxcel(oSheet, dt, 3);

            //***************** Sheet 2
            oSheet = (Excel._Worksheet)oWB.Sheets["Sheet2"];
            oSheet.Name = "Payroll";
            WriteWxcel(oSheet, dt, 4);

            // ************* Sheet 3
            oSheet = (Excel._Worksheet)oWB.Sheets["Sheet3"];
            oSheet.Name = "Receipt";
            WriteWxcel(oSheet, dt, 2);

            //Save Excel File
            oWB.SaveAs(FilePath, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net iis excel-interop

1
推荐指数
1
解决办法
2136
查看次数

在后台运行时Excel互操作COM异常

我正在尝试将一些样式应用于我的工作簿中的单元格.我想在后台线程中执行此操作,以便我的GUI可以保持响应.这个工作应该花几秒钟,如果我点击我的文档中的一些随机单元格,我将得到一个例外.这是我的代码:

public void ApplyStyles()
{
    BackgroundWorker bw = new BackgroundWorker();
    bw.DoWork += DoWork;
    bw.RunWorkerAsync();

}

private void DoWork(object sender, DoWorkEventArgs e)
{
    try
    {
        foreach (ICell xcell in cells)
        {
            Microsoft.Office.Interop.Excel.Range cell = cellUtility.GetCell(xcell);
            if (styles.ContainsKey(styleIds[xcell.Style]))
            {
                Style s = styles[xcell.Style];
                cell.Style = s;
            }
        }
    }
    catch (Exception ex)
    {
        if (Logger.IsErrorEnabled)
        {
            Logger.Error(ex.ToString());
        }
        messageBox.ShowErrorMessage(localizationMessages.ApplyingErrorText, localizationMessages.ApplyingErrorCaption);
    }
}
Run Code Online (Sandbox Code Playgroud)

当异常发生时,这是我收到的消息;

System.Runtime.InteropServices.COMException (0x800AC472): Exception from HRESULT: 0x800AC472
   at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
   at Microsoft.Office.Interop.Excel.Range.set_Style(Object …
Run Code Online (Sandbox Code Playgroud)

c# office-interop excel-interop

1
推荐指数
1
解决办法
1万
查看次数

LinqToExcel:excel列中的不同值

这对你们大师来说可能是一件非常简单的事情,但我不熟悉C#4和INTEROP.因此,我很难过.这是我的问题.我有一个具有重复数据的excel列,我想将其修剪为唯一值.这是数据的样子:

ColA    ColB
10      Adam
12      Jane
14      Adam
18      Adam
20      Eve
Run Code Online (Sandbox Code Playgroud)

所以,最后我只想要ColB的独特名字:

Adam
Jane
Eve
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过将所有这些值放入List中然后向其中添加Distinct功能来实现此目的.但我认为我做错了什么.无论如何,这是我的计划:

Application XLApp = new Microsoft.Office.Interop.Excel.Application();
var XLBook = XLApp.Workbooks.Open(@"c:\temp\Test.xls", ReadOnly: false);
// Grab the 1st sheet
var XLSheet = (Microsoft.Office.Interop.Excel.Worksheet)XLBook.Worksheets.get_Item(1);

XLApp.Visible = true;
// I think I need help with the following lines
IEnumerable<string> myCol = XLApp.Range["B2", XLApp.Range["B2"].End[XlDirection.xlDown]].Select();
myCol.ToList().Distinct();

XLBook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
((_Application)XLApp).Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(XLApp);
Run Code Online (Sandbox Code Playgroud)

如何使用C#4对Excel执行此操作?

提前致谢.

linq interop excel-interop linq-to-excel c#-4.0

1
推荐指数
1
解决办法
6112
查看次数

循环读取excel数据

我需要将读取的数据从excel循环到vb.net,当我到达最后一行/列"!@#$%^&*()"时,excel数据将停止读取.我怎样才能做到这一点?

Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim xRange As Excel.Range
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub
    Private Sub cmdGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGenerate.Click
        'Dim row As String
        Dim empty_cell_ctr As Integer = 0 '5
        Dim end_of_xlsheet As Boolean = False
        Dim sRow As Integer 'start row
        Dim col_end As Integer 'col W
        ' …
Run Code Online (Sandbox Code Playgroud)

vb.net excel vba excel-interop

1
推荐指数
1
解决办法
1万
查看次数

如何使用c#interop从Excel工作表生成图表?

当我将数据表传递给下面的函数时,我可以生成excel文件.

public static void ExportDataTableToExcel(DataTable dt, string filepath)
{
    object missing = Type.Missing;

    object misValue = System.Reflection.Missing.Value;

    //create excel
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

    //add excel workbook
    Microsoft.Office.Interop.Excel.Workbook wb = excel.Workbooks.Add();

    //add worksheet to workbook
    Microsoft.Office.Interop.Excel.Worksheet ws = wb.Sheets[1] as Microsoft.Office.Interop.Excel.Worksheet;

    //add 2nd worksheet to workbook
    Microsoft.Office.Interop.Excel.Worksheet ws2 = wb.Sheets[2] as Microsoft.Office.Interop.Excel.Worksheet;

    //Set the header-row bold
    ws.Range["A1", "A1"].EntireRow.Font.Bold = true;

    //Adjust all columns
    ws.Columns.AutoFit();

   //spit top row
    ws.Application.ActiveWindow.SplitRow = 1;

    //insert image into worsheet 2
    ws2.Shapes.AddPicture("C:\\Koala.JPG", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 50, 50, …
Run Code Online (Sandbox Code Playgroud)

c# excel charts excel-interop

1
推荐指数
1
解决办法
3万
查看次数

使用C#在Excel上的特定单元格中添加图片

我正在尝试将图像添加到第3行第1列的Excel单元格中,如下所示.编译器给了我一个错误.我在这里做错了吗?提前感谢您的建议.

Excel.Application xlApp; 
Excel.Workbook wb; 
Excel.Worksheet ws; 
object misValue = System.Reflection.Missing.Value; 
xlApp = new Excel.Application(); 
wb = xlApp.Workbooks.Add(misValue); 
ws = (Excel.Worksheet)wb.Worksheets.get_Item(1); 
ws.Cells[3, 1] = ws.Shapes.AddPicture("C:\\photos\\4a.png", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 75, 75, 350, 50);
Run Code Online (Sandbox Code Playgroud)

c# excel-interop

1
推荐指数
1
解决办法
1万
查看次数

将工作表添加到 Excel 工作簿

我正在尝试Workbook在 Excel 中创建多张工作表,但我不知道如何创建多张工作表。我可以创建一个就好了,但是当我尝试创建第二个要写入的文件时,出现错误。

Dim app As Application = New Application
Dim xlApp As New Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim newXlApp As Excel.Application = New Microsoft.Office.Interop.Excel.Application
Dim newXlWorkbook As Excel.Workbook
Dim newXlSheet As Excel.Worksheet
Dim newXlSheet2 As Excel.Worksheet

Public Sub createWorkBook()
    newXlWorkbook = newXlApp.Workbooks.Add()

    newXlSheet = newXlWorkbook.Sheets("Sheet1")
    newXlSheet2 = newXlWorkbook.Sheets.Add("Sheet2")

    newXlSheet.Cells(1, 1) = "Task ID"
    newXlSheet.Cells(1, 2) = "Collective Tasks"
    newXlSheet.Cells(1, 3) = "Supported Task"

    newXlSheet2.Cells(1, 1) = "Parent Collective Task"
    newXlSheet2.Cells(1, 2) = "Individual Task"
End Sub …
Run Code Online (Sandbox Code Playgroud)

vb.net excel excel-interop

1
推荐指数
1
解决办法
1万
查看次数

使用 excel introp 或 npoi 从 excel(带有行和单元格位置)读取图像

我需要使用开始和结束行号从 excel 中提取图像。并开始 && 结束 col no

我目前的代码如下:-

  var excelApp = new Application();
  var wb = excelApp.Workbooks.Open(filePath, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing, Type.Missing,
          Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing, Type.Missing);
  var ws = (Worksheet)wb.Worksheets["Sheet1"];
   int startCol = 0;
   int startRow =0;
   int endCol = 0;
   int endRow = 0;
  foreach (var pic in ws.Pictures())
                    {
                        int startCol = pic.TopLeftCell.Column;
                        int startRow = pic.TopLeftCell.Row;
                        int endCol = pic.BottomRightCell.Column;
                        int endRow = pic.BottomRightCell.Row;
                     }
Run Code Online (Sandbox Code Playgroud)

当所有图像都不同时,上面的代码工作正常,但是当我将相同的图像放在不同的单元格中时,它只选择第一个。

例如,当我put abc.jpeg at B1 cell …

c# excel-interop npoi

1
推荐指数
1
解决办法
3998
查看次数

Interop中不退出Excel应用程序

我正在使用以下代码在ASP.net表单上动态写入excel文件,该表单可以将数据表保存为excel.

//Create Excel Object
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Open(target);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];

worksheet.Name = "Worksheet1";
excel.Visible = false;
//Generate Fields Name
foreach (DataColumn col in dataTable.Columns)
{
    colIndex++;
    excel.Cells[1, colIndex] = col.ColumnName;
}
object[,] objData = new object[rowNo, columnNo];
for (int row = 0; row < rowNo; row++)
{
    for (int col = 0; col < columnNo; col++)
    {
        objData[row, col] = dataTable.Rows[row][col];
    }
}
Microsoft.Office.Interop.Excel.Range range;
range = worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNo + 1, columnNo]]; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net excel impersonation excel-interop

0
推荐指数
1
解决办法
4712
查看次数

使用Excel Interop混合字符串和数字

我正在使用F#和Excel Interop.我做的事情如下:

workbook.Range("A1:A10").Value2 <- [| "foo"; "3"; "bar"; "6"; "8" |]
Run Code Online (Sandbox Code Playgroud)

当我查看生成的电子表格时,它将"3","6"和"8"存储为字符串而不是数字.这意味着公式等失败.有没有办法让Excel在适当的位置将字符串转换为数字?

我目前的解决方法是:

workbook.Range("A1:A10").Value2 <- [| "foo" :> obj
                                      3 :> obj
                                      "bar" :> obj
                                      6 :> obj
                                      8 :> obj |]
Run Code Online (Sandbox Code Playgroud)

它产生了预期的效果,但它很尴尬.有一个更好的方法吗?

f# excel-interop

0
推荐指数
1
解决办法
130
查看次数

检查ListObject值

我试图检查我的范围ListObject,看它是否包含数字9.我不断得到一个"不能隐式转换类型'int'到'bool'".

if (xlWorkBook.Worksheets["Sheet1"].ListObjects["table1"].Range[1, 1].value2 = 9)
{
    xlSheet.Cells[5, 5] = "YES!";
}
else 
{ 
    xlSheet.Cells[5, 5] = "NO!"; 
}
Run Code Online (Sandbox Code Playgroud)

解决了答案:

if (xlWorkBook.Worksheets["Sheet1"].ListObjects["table1"].Range[1, 1].value2 == 9)
{
    xlSheet.Cells[5, 5] = "YES!";
}
else 
{ 
    xlSheet.Cells[5, 5] = "NO!"; 
}
Run Code Online (Sandbox Code Playgroud)

在阅读了C#的运算符后,我发现"=="用于比较,而"="用于赋值.

c# excel-interop listobject

0
推荐指数
1
解决办法
87
查看次数

try catch语句中的变量范围问题c#

我不想在这里问这个简单的问题,但我已经研究了一段时间而无济于事.它严重限制了我的申请.

为什么我在try块中的excelWorksheet变量上出现红色波浪形(在此范围内无法声明名为"excelWorksheet"的局部或参数,因为该名称用于封闭的本地范围).如果我删除了null声明,那么try catch语句之后的所有'excelWorksheet'实例都会变为红色.非常感谢任何帮助.这是代码:

 Excel.Worksheet excelWorksheet = null;          
        try
        {
            //declare the worksheet variable raw data
            string currentSheet = "Raw Data";
            Excel.Worksheet excelWorksheet = (Excel.Worksheet)ExcelSheets.get_Item(currentSheet);
        }
        catch(Exception r)
        {
            MessageBox.Show("The Raw Data sheet in the report does not exist. " + r);
            return;
        }
Run Code Online (Sandbox Code Playgroud)

c# try-catch excel-interop

0
推荐指数
1
解决办法
310
查看次数

使用excel互操作在C#中生成预测值

我想使用excel introp预测功能生成预测值.我需要使用excel预测线性函数,但我想将预测值存储到数据库.

我知道如何开始请帮助我.

c# excel-formula excel-interop

0
推荐指数
1
解决办法
607
查看次数