从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) 我正在尝试将一些样式应用于我的工作簿中的单元格.我想在后台线程中执行此操作,以便我的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#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执行此操作?
提前致谢.
我需要将读取的数据从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) 当我将数据表传递给下面的函数时,我可以生成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) 我正在尝试将图像添加到第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) 我正在尝试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) 我需要使用开始和结束行号从 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 …
我正在使用以下代码在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) 我正在使用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)
它产生了预期的效果,但它很尴尬.有一个更好的方法吗?
我试图检查我的范围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#的运算符后,我发现"=="用于比较,而"="用于赋值.
我不想在这里问这个简单的问题,但我已经研究了一段时间而无济于事.它严重限制了我的申请.
为什么我在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) 我想使用excel introp预测功能生成预测值.我需要使用excel预测线性函数,但我想将预测值存储到数据库.
我知道如何开始请帮助我.