VBA コードをC#に変換しようとしています。私はC#が初めてです。現在、フォルダからExcelファイルを開こうとしていますが、存在しない場合は作成します。私は次のようなものを試しています。どうすればそれを機能させることができますか?
Excel.Application objexcel;
Excel.Workbook wbexcel;
bool wbexists;
Excel.Worksheet objsht;
Excel.Range objrange;
objexcel = new Excel.Application();
if (Directory("C:\\csharp\\error report1.xls") = "")
{
wbexcel.NewSheet();
}
else
{
wbexcel.Open("C:\\csharp\\error report1.xls");
objsht = ("sheet1");
}
objsht.Activate();
Microsoft Visual Studio Tools for Office(VSTO)をインストールする必要があります。
VSTOは、Visual Studioインストーラーの[ワークロード]> [Webとクラウド]> [Office/SharePoint開発]で選択できます。
その後、共通の.NETプロジェクトを作成し、「参照の追加...」>「アセンブリ」ダイアログを介してMicrosoft.Office.Interop.Excel
への参照を追加します。
Application Excel = new Application();
Workbook wb = Excel.Workbooks.Open(path);
Missing.Value
は、不必要なパラメーター置換のための特別なリフレクション構造体です
新しいバージョンでは、必要なアセンブリ参照はMicrosoft Excel 16.0 Object Library
と呼ばれます。最新バージョンがインストールされていない場合、Microsoft Excel 15.0 Object Library
、または古いバージョンがインストールされている可能性がありますが、これは含めるプロセスと同じです。
FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
//file doesn't exist
}
private void btnChoose2_Click(object sender, EventArgs e)
{
OpenFileDialog openfileDialog1 = new OpenFileDialog();
if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.btnChoose2.Text = openfileDialog1.FileName;
String filename = DialogResult.ToString();
var excelApp = new Excel.Application();
excelApp.Visible = true;
excelApp.Workbooks.Open(btnChoose2.Text);
}
}
excelファイルを開く
System.Diagnostics.Process.Start(@"c:\document.xls");
輸入品
using Excel= Microsoft.Office.Interop.Excel;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
C#を使用してExcelシートを開くコードを次に示します。
Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook wbv = Excel.Workbooks.Open("C:\\YourExcelSheet.xlsx");
Microsoft.Office.Interop.Excel.Worksheet wx = Excel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
wbv.Close(true, Type.Missing, Type.Missing);
Excel.Quit();
C# https://www.youtube.com/watch?v=O5Dnv0tfGv4 を使用してExcelワークシートを開く方法についてのビデオメイトを次に示します。
このように開く必要があります
Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
ソース: http://csharp.net-informations.com/Excel/csharp-open-Excel.htm
ルーデン
ファイルを開くには、これを試してください:
objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls",
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing,missing, missing);
これらの愚かな見た目の「欠落」引数を提供する必要があります。 VB.Netで同じコードを記述している場合、それらは必要ありませんが、C#でそれらを回避することはできません。
何が間違っているのか、それを実行したときに何が失敗したのかを言うと、あなたを助けるのは簡単です。
しかし、一目見ただけでは、いくつかの混乱が生じています。
以下はいくつかの問題のため機能しません。
if (Directory("C:\\csharp\\error report1.xls") = "")
あなたがやろうとしているのは、ファイルを指す新しいディレクトリオブジェクトを作成し、エラーがあったかどうかを確認することです。
実際に実行しているのは、Directory()という名前の関数を呼び出して、結果に文字列を割り当てることです。 1/Directory(string str)という名前の関数がなく、関数の結果に割り当てることができないため、これは機能しません(変数に値を割り当てることしかできません)。
(少なくともこの行では)あなたがすべきことは次のとおりです。
FileInfo fi = new FileInfo("C:\\csharp\\error report1.xls");
if(!fi.Exists)
{
// Create the xl file here
}
else
{
// Open file here
}
Excelコードが機能しない理由については、Googleが提供できるExcelライブラリのドキュメントを確認する必要があります。
Microsoft.Office.Interop.Excel.Application excapp;
excapp = new Microsoft.Office.Interop.Excel.Application();
object misval=System.Reflection.Missing.Value;
Workbook wrkbuk = new Workbook();
Worksheet wrksht = new Worksheet();
wrkbuk = excapp.Workbooks._Open(@"C:\Users\...\..._template_v1.0.xlsx", misval, misval,
misval, misval, misval, misval, misval, misval, misval, misval, misval, misval);
wrksht = (Microsoft.Office.Interop.Excel.Worksheet)wrkbuk.Worksheets.get_Item(2);
これは商用アプリケーションですか、それとも趣味の人/オープンソースソフトウェアですか?
私の経験では、すべての無料の.NET Excel処理の代替案はさまざまな理由で深刻な問題があるため、これを求めています。趣味の場合は、通常jExcelApiをJavaからC#に移植して使用します。
ただし、これが商用アプリケーションである場合は、 Aspose.Cells のようなサードパーティライブラリを購入することをお勧めします。信じてください。多くの時間と時間を節約できるので、それは完全に価値があります。
コード:
private void button1_Click(object sender, EventArgs e)
{
textBox1.Enabled=false;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excell File |*.xlsx;*,xlsx";
if (ofd.ShowDialog() == DialogResult.OK)
{
string extn = Path.GetExtension(ofd.FileName);
if (extn.Equals(".xls") || extn.Equals(".xlsx"))
{
filename = ofd.FileName;
if (filename != "")
{
try
{
string excelfilename = Path.GetFileName(filename);
}
catch (Exception ew)
{
MessageBox.Show("Errror:" + ew.ToString());
}
}
}
}
C#アプリケーション内からExcelファイルを編集するために、最近 NPOI の使用を開始しました。とても満足しています。